Update Region Override

This commit is contained in:
retro-wertz
2017-10-07 13:35:00 +08:00
parent 2af919c6eb
commit 294eb511b4
3 changed files with 26 additions and 26 deletions

View File

@@ -52,7 +52,6 @@ static bool use_raw_palette;
static bool use_par; static bool use_par;
int turbo_enabler; int turbo_enabler;
int turbo_delay; int turbo_delay;
static int regionoverride = -1;
static int t[2] = { 0, 0 }; static int t[2] = { 0, 0 };
static int zapper_mode = 0; /* 0=absolute 1=relative */ static int zapper_mode = 0; /* 0=absolute 1=relative */
@@ -69,6 +68,8 @@ unsigned normal_scanlines = 240;
unsigned extrascanlines = 0; unsigned extrascanlines = 0;
unsigned vblankscanlines = 0; unsigned vblankscanlines = 0;
static unsigned is_PAL = 0;
static unsigned setregion = 0;
unsigned dendy = 0; unsigned dendy = 0;
int FCEUnetplay; int FCEUnetplay;
@@ -741,45 +742,36 @@ static void retro_set_custom_palette(void)
* Dendy has PAL framerate and resolution, but ~NTSC timings, * Dendy has PAL framerate and resolution, but ~NTSC timings,
* and has 50 dummy scanlines to force 50 fps. * and has 50 dummy scanlines to force 50 fps.
*/ */
void FCEUD_RegionOverride(int region) void FCEUD_RegionOverride(unsigned region)
{ {
static int w = 0;
struct retro_system_av_info av_info; struct retro_system_av_info av_info;
unsigned pal = 0;
switch (region) switch (region)
{ {
case 0: /* auto */ case 0: /* auto */
dendy = 0; dendy = 0;
w = (GameInfo->vidsys == GIV_PAL) ? 1 : 0; pal = is_PAL;
break; break;
case 1: /* ntsc */ case 1: /* ntsc */
dendy = 0; dendy = 0;
w = 0; pal = 0;
FCEU_DispMessage("Switched to NTSC"); FCEU_DispMessage("Switched to NTSC");
break; break;
case 2: /* pal */ case 2: /* pal */
dendy = 0; dendy = 0;
w = 1; pal = 1;
FCEU_DispMessage("Switched to PAL"); FCEU_DispMessage("Switched to PAL");
break; break;
case 3: /* dendy */ case 3: /* dendy */
dendy = 1; dendy = 1;
w = 0; pal = 0;
FCEU_DispMessage("Switched to Dendy"); FCEU_DispMessage("Switched to Dendy");
break; break;
} }
FSettings.PAL = w ; normal_scanlines = dendy ? (240 + 50) : 240;
PAL = w ? 1 : 0; FCEUI_SetVidSystem(pal);
normal_scanlines = dendy ? 290 : 240;
totalscanlines = normal_scanlines + (overclock_state ? extrascanlines : 0);
FCEUPPU_SetVideoSystem(w || dendy);
SetSoundVariables();
/* Update the timing(fps) in frontend */
retro_get_system_av_info(&av_info);
/* not needed in current implementation to update fps */
/* environ_cb(RETRO_ENVIRONMENT_SET_GEOMETRY, &av_info); */
} }
void retro_deinit (void) void retro_deinit (void)
@@ -825,7 +817,6 @@ static void check_variables(bool startup)
struct retro_variable var = {0}; struct retro_variable var = {0};
struct retro_system_av_info av_info; struct retro_system_av_info av_info;
bool geometry_update = false; bool geometry_update = false;
unsigned old_regionoverride = regionoverride;
var.key = "fceumm_palette"; var.key = "fceumm_palette";
@@ -1021,17 +1012,19 @@ static void check_variables(bool startup)
var.key = "fceumm_region"; var.key = "fceumm_region";
if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value)
{ {
unsigned oldval = setregion;
if (!strcmp(var.value, "Auto")) if (!strcmp(var.value, "Auto"))
regionoverride = 0; setregion = 0;
else if (!strcmp(var.value, "NTSC")) else if (!strcmp(var.value, "NTSC"))
regionoverride = 1; setregion = 1;
else if (!strcmp(var.value, "PAL")) else if (!strcmp(var.value, "PAL"))
regionoverride = 2; setregion = 2;
else if (!strcmp(var.value, "Dendy")) else if (!strcmp(var.value, "Dendy"))
regionoverride = 3; setregion = 3;
if (setregion != oldval)
FCEUD_RegionOverride(setregion);
} }
if (regionoverride != old_regionoverride)
FCEUD_RegionOverride(regionoverride);
var.key = "fceumm_aspect"; var.key = "fceumm_aspect";
@@ -1792,6 +1785,8 @@ bool retro_load_game(const struct retro_game_info *game)
if (GameInfo->type == GIT_VSUNI) if (GameInfo->type == GIT_VSUNI)
FCEU_PrintError("VS Unisystem rom loaded, will use default palette.\n"); FCEU_PrintError("VS Unisystem rom loaded, will use default palette.\n");
is_PAL = retro_get_region(); /* Save current loaded region info */
retro_set_custom_palette(); retro_set_custom_palette();
FCEUD_SoundToggle(); FCEUD_SoundToggle();

View File

@@ -726,6 +726,9 @@ int FDSLoad(const char *name, FCEUFILE *fp) {
SetupCartMirroring(0, 0, 0); SetupCartMirroring(0, 0, 0);
FCEU_printf(" Sides: %d\n\n", TotalSides); FCEU_printf(" Sides: %d\n\n", TotalSides);
FCEUI_SetVidSystem(0);
return 1; return 1;
} }

View File

@@ -807,8 +807,10 @@ int iNESLoad(const char *name, FCEUFILE *fp) {
|| strstr(name, "(Sweden)") || strstr(name, "(Sw)") || strstr(name, "(Sweden)") || strstr(name, "(Sw)")
|| strstr(name, "(Australia)") || strstr(name, "(A)") || strstr(name, "(Australia)") || strstr(name, "(A)")
|| strstr(name, "(a)")) { || strstr(name, "(a)")) {
GameInfo->vidsys = GIV_PAL; FCEUI_SetVidSystem(1);
} }
else
FCEUI_SetVidSystem(0);
return 1; return 1;
} }