diff --git a/menu.cpp b/menu.cpp index 689391f..5804405 100644 --- a/menu.cpp +++ b/menu.cpp @@ -211,7 +211,7 @@ const char *config_midilink_mode[] = {"Local", "Local", " USB", " UDP", "----- const char *config_scaler_msg[] = { "Internal","Custom" }; const char *config_afilter_msg[] = { "Internal","Custom" }; const char *config_gamma_msg[] = { "Off","On" }; -const char *config_scale[] = { "Normal", "V-Integer", "HV-Integer-", "HV-Integer+" }; +const char *config_scale[] = { "Normal", "V-Integer", "HV-Integer-", "HV-Integer+", "HV-Integer", "???", "???", "???" }; #define DPAD_NAMES 4 #define DPAD_BUTTON_NAMES 12 //DPAD_NAMES + 6 buttons + start/select @@ -4230,7 +4230,7 @@ void HandleUI(void) } else if (select || plus || minus) { - uint16_t mt32_cfg = is_minimig() ? minimig_get_extcfg() : tos_get_extctrl(); + uint32_t mt32_cfg = is_minimig() ? minimig_get_extcfg() : tos_get_extctrl(); switch (menusub) { @@ -5473,14 +5473,13 @@ void HandleUI(void) /* video settings menu */ /******************************************************************/ case MENU_MINIMIG_VIDEO1: - menumask = 0x7ff; + menumask = 0x1fff; parentstate = menustate; helptext_idx = 0; // helptexts[HELPTEXT_VIDEO]; m = 0; - OsdSetTitle("Video", OSD_ARROW_LEFT | OSD_ARROW_RIGHT); + OsdSetTitle("Audio & Video", OSD_ARROW_LEFT | OSD_ARROW_RIGHT); - OsdWrite(m++); strcpy(s, " TV Standard : "); strcat(s, minimig_config.chipset & CONFIG_NTSC ? "NTSC" : "PAL"); OsdWrite(m++, s, menusub == 0, 0); @@ -5498,7 +5497,7 @@ void HandleUI(void) strcat(s, (minimig_get_extcfg() & 0x400) ? "Adaptive" : "28MHz"); OsdWrite(m++, s, menusub == 4, 0); strcpy(s, " Scaling : "); - strcat(s,config_scale[(minimig_get_extcfg() >> 11) & 3]); + strcat(s,config_scale[(minimig_get_extcfg() >> 11) & 7]); OsdWrite(m++, s, menusub == 5, 0); strcpy(s, " RTG Upscaling : "); strcat(s, (minimig_get_extcfg() & 0x4000) ? "HV-Integer" : "Normal"); @@ -5509,13 +5508,19 @@ void HandleUI(void) strcat(s, config_stereo_msg[minimig_config.audio & 3]); OsdWrite(m++, s, menusub == 7, 0); strcpy(s, " Audio Filter : "); - strcat(s, (minimig_get_extcfg() & 0x8000) ? "On" : "Off"); + strcat(s, (~minimig_get_extcfg() & 0x10000) ? "Auto(LED)" : (minimig_get_extcfg() & 0x8000) ? "On" : "Off"); OsdWrite(m++, s, menusub == 8, 0); + strcpy(s, " Model : "); + strcat(s, (minimig_get_extcfg() & 0x20000) ? "A1200" : "A500"); + OsdWrite(m++, s, menusub == 9, 0); + strcpy(s, " Paula Output : "); + strcat(s, (minimig_get_extcfg() & 0x40000) ? "PWM" : "Normal"); + OsdWrite(m++, s, menusub == 10, 0); OsdWrite(m++); - OsdWrite(m++, minimig_get_adjust() ? " Finish screen adjustment" : " Adjust screen position", menusub == 9, 0); + OsdWrite(m++, minimig_get_adjust() ? " Finish screen adjustment" : " Adjust screen position", menusub == 11, 0); for (; m < OsdGetSize() - 1; m++) OsdWrite(m); - OsdWrite(OsdGetSize() - 1, STD_EXIT, menusub == 10, 0); + OsdWrite(OsdGetSize() - 1, STD_EXIT, menusub == 12, 0); menustate = MENU_MINIMIG_VIDEO2; break; @@ -5566,7 +5571,12 @@ void HandleUI(void) break; case 5: - minimig_set_extcfg((minimig_get_extcfg() & ~0x1800) | ((minimig_get_extcfg() + (minus ? -0x800 : 0x800)) & 0x1800)); + { + int mode = (minimig_get_extcfg() >> 11) & 7; + if (minus) mode = (mode <= 0) ? 4 : (mode - 1); + else mode = (mode >= 4) ? 0 : (mode + 1); + minimig_set_extcfg((minimig_get_extcfg() & ~0x3800) | (mode << 11)); + } break; case 6: @@ -5579,10 +5589,23 @@ void HandleUI(void) break; case 8: - minimig_set_extcfg(minimig_get_extcfg() ^ 0x8000); + { + int mode = (minimig_get_extcfg() >> 15) & 3; + if (minus) mode = (mode == 2) ? 0 : (mode - 1); + else mode = (mode == 0) ? 2 : (mode + 1); + minimig_set_extcfg((minimig_get_extcfg() & ~0x18000) | ((mode & 3) << 15)); + } break; case 9: + minimig_set_extcfg(minimig_get_extcfg() ^ 0x20000); + break; + + case 10: + minimig_set_extcfg(minimig_get_extcfg() ^ 0x40000); + break; + + case 11: if (select) { menustate = MENU_NONE1; @@ -5590,7 +5613,7 @@ void HandleUI(void) } break; - case 10: + case 12: if (select) { menustate = MENU_MINIMIG_MAIN1; diff --git a/support/minimig/minimig_config.cpp b/support/minimig/minimig_config.cpp index 5a356ff..4d04dc1 100644 --- a/support/minimig/minimig_config.cpp +++ b/support/minimig/minimig_config.cpp @@ -378,7 +378,7 @@ static void ApplyConfiguration(char reloadkickstart) minimig_ConfigVideo(minimig_config.scanlines); minimig_ConfigAudio(minimig_config.audio); minimig_ConfigAutofire(minimig_config.autofire, 0xC); - minimig_set_extcfg(minimig_config.ext_cfg & ~1); + minimig_set_extcfg(minimig_get_extcfg() & ~1); } int minimig_cfg_load(int num) @@ -706,9 +706,10 @@ void minimig_ConfigAutofire(unsigned char autofire, unsigned char mask) spi_uio_cmd16(UIO_MM2_JOY, param); } -void minimig_set_extcfg(unsigned short ext_cfg) +void minimig_set_extcfg(unsigned int ext_cfg) { - minimig_config.ext_cfg = ext_cfg; + minimig_config.ext_cfg = (unsigned short)ext_cfg; + minimig_config.ext_cfg2 = (unsigned short)(ext_cfg >> 16); spi_uio_cmd_cont(UIO_SET_STATUS2); spi32_w(0); @@ -716,7 +717,7 @@ void minimig_set_extcfg(unsigned short ext_cfg) DisableIO(); } -unsigned short minimig_get_extcfg() +unsigned int minimig_get_extcfg() { - return minimig_config.ext_cfg; + return (minimig_config.ext_cfg2 << 16) | minimig_config.ext_cfg; } diff --git a/support/minimig/minimig_config.h b/support/minimig/minimig_config.h index 4ed83b6..6a11d2e 100644 --- a/support/minimig/minimig_config.h +++ b/support/minimig/minimig_config.h @@ -41,7 +41,8 @@ typedef struct typedef struct { char id[8]; - unsigned long version; + unsigned short version; + unsigned short ext_cfg2; char kickstart[992]; char label[32]; unsigned short ext_cfg; @@ -78,7 +79,7 @@ void minimig_ConfigChipset(unsigned char chipset); void minimig_ConfigFloppy(unsigned char drives, unsigned char speed); void minimig_ConfigAutofire(unsigned char autofire, unsigned char mask); -void minimig_set_extcfg(unsigned short ext_cfg); -unsigned short minimig_get_extcfg(); +void minimig_set_extcfg(unsigned int ext_cfg); +unsigned int minimig_get_extcfg(); #endif