From 47334a1dd8bc064625ed2a4912170d395f5da297 Mon Sep 17 00:00:00 2001 From: sorgelig Date: Sat, 5 Oct 2019 22:51:21 +0800 Subject: [PATCH] OSD: use the same commands for Minimig. --- menu.cpp | 6 ++--- osd.cpp | 74 +++++++++----------------------------------------------- osd.h | 63 ++++++++++++++++------------------------------- 3 files changed, 35 insertions(+), 108 deletions(-) diff --git a/menu.cpp b/menu.cpp index bd3320c..905f257 100644 --- a/menu.cpp +++ b/menu.cpp @@ -846,7 +846,7 @@ void HandleUI(void) { menu_visible = 0; video_menu_bg((user_io_8bit_set_status(0, 0) & 0xE) >> 1, 1); - spi_osd_cmd(MM1_OSDCMDDISABLE); + spi_osd_cmd(OSD_CMD_DISABLE); } else if (!menu_visible) { @@ -863,8 +863,8 @@ void HandleUI(void) c = 0; menu_visible = 1; video_menu_bg((user_io_8bit_set_status(0, 0) & 0xE) >> 1); - spi_osd_cmd(MM1_OSDCMDWRITE | 8); - spi_osd_cmd(MM1_OSDCMDENABLE); + spi_osd_cmd(OSD_CMD_WRITE | 8); + spi_osd_cmd(OSD_CMD_ENABLE); } } diff --git a/osd.cpp b/osd.cpp index c18cb28..bba66c3 100644 --- a/osd.cpp +++ b/osd.cpp @@ -226,10 +226,7 @@ void OsdWriteOffset(unsigned char n, const char *s, unsigned char invert, unsign stipple = 0; // select buffer and line to write to - if (!is_minimig()) - spi_osd_cmd_cont(MM1_OSDCMDWRITE | n); - else - spi_osd_cmd32_cont(OSD_CMD_OSD_WR, n); + spi_osd_cmd_cont(OSD_CMD_WRITE | n); if (invert) invert = 255; @@ -293,11 +290,7 @@ void OsdWriteOffset(unsigned char n, const char *s, unsigned char invert, unsign // send new line number to OSD DisableOsd(); - - if (!is_minimig()) - spi_osd_cmd_cont(MM1_OSDCMDWRITE | n); - else - spi_osd_cmd32_cont(OSD_CMD_OSD_WR, n); + spi_osd_cmd_cont(OSD_CMD_WRITE | n); } else if (i<(linelimit - 8)) { // normal character unsigned char c; @@ -344,14 +337,7 @@ void OsdDrawLogo(int row) uint n = row * mag; // select buffer and line to write to - if (!is_minimig()) - { - spi_osd_cmd_cont(MM1_OSDCMDWRITE | n); - } - else - { - spi_osd_cmd32_cont(OSD_CMD_OSD_WR, n); - } + spi_osd_cmd_cont(OSD_CMD_WRITE | n); for (int k = 0; k < mag; k++) { @@ -410,13 +396,9 @@ void OSD_PrintText(unsigned char line, const char *hdr, const char *text, unsign int i, j; // select buffer and line to write to - if (!is_minimig()) - spi_osd_cmd_cont(MM1_OSDCMDWRITE | line); - else - spi_osd_cmd32_cont(OSD_CMD_OSD_WR, line); + spi_osd_cmd_cont(OSD_CMD_WRITE | line); - if (invert) - invert = 0xff; + if (invert) invert = 0xff; p = &titlebuffer[(osd_size - 1 - line) * 8]; if (start>2) @@ -532,10 +514,7 @@ void OSD_PrintInfo(const char *message, int *width, int *height, int frame) for (y = 0; y < h; y++) { - if (!is_minimig()) - spi_osd_cmd_cont(MM1_OSDCMDWRITE | y); - else - spi_osd_cmd32_cont(OSD_CMD_OSD_WR, y); + spi_osd_cmd_cont(OSD_CMD_WRITE | y); for (x = 0; x < w; x++) { @@ -550,14 +529,8 @@ void OSD_PrintInfo(const char *message, int *width, int *height, int frame) // clear OSD frame buffer void OsdClear(void) { - // select buffer to write to - if (!is_minimig()) spi_osd_cmd_cont(MM1_OSDCMDWRITE); - else spi_osd_cmd32_cont(OSD_CMD_OSD_WR, 0); - - // clear buffer + spi_osd_cmd_cont(OSD_CMD_WRITE); spi_n(0x00, OSDLINELEN * OsdGetSize()); - - // deselect OSD SPI device DisableOsd(); } @@ -565,27 +538,14 @@ void OsdClear(void) void OsdEnable(unsigned char mode) { user_io_osd_key_enable(mode & DISABLE_KEYBOARD); - mode &= DISABLE_KEYBOARD; - - if (!is_minimig()) spi_osd_cmd(MM1_OSDCMDENABLE | mode); - else spi_osd_cmd8(OSD_CMD_OSD, 0x01 | mode); + spi_osd_cmd(OSD_CMD_ENABLE | mode); } void InfoEnable(int x, int y, int width, int height) { user_io_osd_key_enable(0); - - if (!is_minimig()) - { - spi_osd_cmd_cont(MM1_OSDCMDENABLE | OSD_INFO); - } - else - { - spi_osd_cmd_cont(OSD_CMD_OSD); - spi8(1 | OSD_INFO); - } - + spi_osd_cmd_cont(OSD_CMD_ENABLE | OSD_INFO); spi_w(x); spi_w(y); spi_w(width); @@ -595,15 +555,7 @@ void InfoEnable(int x, int y, int width, int height) void OsdRotation(uint8_t rotate) { - if (!is_minimig()) - { - spi_osd_cmd_cont(MM1_OSDCMDDISABLE); - } - else - { - spi_osd_cmd_cont(OSD_CMD_OSD); - spi8(0); - } + spi_osd_cmd_cont(OSD_CMD_DISABLE); spi_w(0); spi_w(0); spi_w(0); @@ -616,11 +568,7 @@ void OsdRotation(uint8_t rotate) void OsdDisable(void) { user_io_osd_key_enable(0); - - if (!is_minimig()) - spi_osd_cmd(MM1_OSDCMDDISABLE); - else - spi_osd_cmd8(OSD_CMD_OSD, 0x00); + spi_osd_cmd(OSD_CMD_DISABLE); } diff --git a/osd.h b/osd.h index f99c08c..705e963 100644 --- a/osd.h +++ b/osd.h @@ -1,48 +1,29 @@ #ifndef OSD_H_INCLUDED #define OSD_H_INCLUDED -/*constants*/ -#define OSDCTRLUP 0x01 /*OSD up control*/ -#define OSDCTRLDOWN 0x02 /*OSD down control*/ -#define OSDCTRLSELECT 0x04 /*OSD select control*/ -#define OSDCTRLMENU 0x08 /*OSD menu control*/ -#define OSDCTRLRIGHT 0x10 /*OSD right control*/ -#define OSDCTRLLEFT 0x20 /*OSD left control*/ +#include // some constants #define OSDLINELEN 256 // single line length in bytes -// ---- old Minimig v1 constants ------- -#define MM1_OSDCMDREAD 0x00 // OSD read controller/key status -#define MM1_OSDCMDWRITE 0x20 // OSD write video data command -#define MM1_OSDCMDENABLE 0x41 // OSD enable command -#define MM1_OSDCMDDISABLE 0x40 // OSD disable command -#define MM1_OSDCMDRST 0x80 // OSD reset command -#define MM1_OSDCMDAUTOFIRE 0x84 // OSD autofire command -#define MM1_OSDCMDCFGSCL 0xA0 // OSD settings: scanlines effect -#define MM1_OSDCMDCFGIDE 0xB0 // OSD enable HDD command -#define MM1_OSDCMDCFGFLP 0xC0 // OSD settings: floppy config -#define MM1_OSDCMDCFGCHP 0xD0 // OSD settings: chipset config -#define MM1_OSDCMDCFGFLT 0xE0 // OSD settings: filter -#define MM1_OSDCMDCFGMEM 0xF0 // OSD settings: memory config -#define MM1_OSDCMDCFGCPU 0xFC // OSD settings: CPU config +#define OSD_CMD_WRITE 0x20 // OSD write video data command +#define OSD_CMD_ENABLE 0x41 // OSD enable command +#define OSD_CMD_DISABLE 0x40 // OSD disable command -// ---- new Minimig v2 constants ------- -#define OSD_CMD_READ 0x00 -#define OSD_CMD_RST 0x08 -#define OSD_CMD_CLK 0x18 -#define OSD_CMD_OSD 0x28 -#define OSD_CMD_CHIP 0x04 -#define OSD_CMD_CPU 0x14 -#define OSD_CMD_MEM 0x24 -#define OSD_CMD_VID 0x34 -#define OSD_CMD_FLP 0x44 -#define OSD_CMD_HDD 0x54 -#define OSD_CMD_JOY 0x64 -#define OSD_CMD_AUD 0x74 -#define OSD_CMD_OSD_WR 0x0c -#define OSD_CMD_WR 0x1c -#define OSD_CMD_VERSION 0x88 +// ---- Minimig v2 constants ------- +#define OSD_CMD_READ 0x00 +#define OSD_CMD_RST 0x08 +#define OSD_CMD_CLK 0x18 +#define OSD_CMD_CHIP 0x04 +#define OSD_CMD_CPU 0x14 +#define OSD_CMD_MEM 0x24 +#define OSD_CMD_VID 0x34 +#define OSD_CMD_FLP 0x44 +#define OSD_CMD_HDD 0x54 +#define OSD_CMD_JOY 0x64 +#define OSD_CMD_AUD 0x74 +#define OSD_CMD_WR 0x1c +#define OSD_CMD_VERSION 0x88 #define DISABLE_KEYBOARD 0x02 // disable keyboard while OSD is active #define OSD_INFO 0x04 // display info @@ -55,15 +36,13 @@ #define CONFIG_NTSC 2 #define CONFIG_A1000 4 #define CONFIG_ECS 8 -#define CONFIG_AGA 16 +#define CONFIG_AGA 16 #define CONFIG_FLOPPY1X 0 #define CONFIG_FLOPPY2X 1 -#define OSD_ARROW_LEFT 1 -#define OSD_ARROW_RIGHT 2 - -#include +#define OSD_ARROW_LEFT 1 +#define OSD_ARROW_RIGHT 2 /*functions*/ void OsdSetTitle(const char *s, int arrow = 0); // arrow > 0 = display right arrow in bottom right, < 0 = display left arrow