core+platforms, add SMS option to select TMS palette for gfx modes 0-3

This commit is contained in:
kub 2024-01-13 16:31:43 +01:00
parent dca20effa2
commit 214a6c624c
7 changed files with 36 additions and 2 deletions

View file

@ -741,6 +741,10 @@ void PicoFrameStartSMS(void)
Pico.m.dirtyPal = 1;
}
Pico.m.hardware &= ~PMS_HW_TMS;
if (PicoIn.tmsPalette || (PicoIn.AHW & (PAHW_SG|PAHW_SC)))
Pico.m.hardware |= PMS_HW_TMS;
// Copy LCD enable flag for easier handling
Pico.m.hardware &= ~PMS_HW_LCD;
if ((PicoIn.opt & POPT_EN_GG_LCD) && (PicoIn.AHW & PAHW_GG)) {
@ -886,7 +890,7 @@ void PicoDoHighPal555SMS(void)
* hence GG/SMS/TMS can all be handled the same here */
for (j = cnt; j > 0; j--) {
if (!(Pico.video.reg[0] & 0x4)) // fixed palette in TMS modes
spal = (u32 *)tmspal + (PicoIn.AHW & (PAHW_SG|PAHW_SC) ? 16/2:0);
spal = (u32 *)tmspal + (Pico.m.hardware & PMS_HW_TMS ? 16/2:0);
for (i = 0x20/2; i > 0; i--, spal++, dpal++) {
t = *spal;
#if defined(USE_BGR555)

View file

@ -116,6 +116,7 @@ typedef struct PicoInterface
unsigned short autoRgnOrder; // packed priority list of regions, for example 0x148 means this detection order: EUR, USA, JAP
unsigned int hwSelect; // hardware preselected via option menu
unsigned int mapper; // mapper selection for SMS, 0 = auto
unsigned int tmsPalette; // palette used by SMS in TMS graphic modes
unsigned short quirks; // game-specific quirks: PQUIRK_*
unsigned short overclockM68k; // overclock the emulated 68k, in %

View file

@ -346,7 +346,8 @@ struct PicoMisc
#define PMS_HW_LCD 0x2 // GG LCD
#define PMS_HW_JAP 0x4 // japanese system
#define PMS_HW_FM 0x8 // FM sound
#define PMS_HW_FMUSED 0x10 // FM sound accessed
#define PMS_HW_TMS 0x10 // assume TMS9918
#define PMS_HW_FMUSED 0x80 // FM sound accessed
#define PMS_MAP_AUTO 0
#define PMS_MAP_SEGA 1