in cores/nes/src/drivers/libretro/libretro.c [879:1094]
static void check_variables(bool startup)
{
struct retro_variable var = {0};
struct retro_system_av_info av_info;
bool geometry_update = false;
unsigned old_regionoverride = regionoverride;
var.key = "fceumm_palette";
if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value)
{
unsigned orig_value = current_palette;
if (!strcmp(var.value, "asqrealc"))
current_palette = 0;
else if (!strcmp(var.value, "loopy"))
current_palette = 1;
else if (!strcmp(var.value, "quor"))
current_palette = 2;
else if (!strcmp(var.value, "chris"))
current_palette = 3;
else if (!strcmp(var.value, "matt"))
current_palette = 4;
else if (!strcmp(var.value, "matt"))
current_palette = 5;
else if (!strcmp(var.value, "pasofami"))
current_palette = 6;
else if (!strcmp(var.value, "crashman"))
current_palette = 7;
else if (!strcmp(var.value, "mess"))
current_palette = 8;
else if (!strcmp(var.value, "zaphod-cv"))
current_palette = 9;
else if (!strcmp(var.value, "zaphod-smb"))
current_palette = 10;
else if (!strcmp(var.value, "vs-drmar"))
current_palette = 11;
else if (!strcmp(var.value, "vs-cv"))
current_palette = 12;
else if (!strcmp(var.value, "vs-smb"))
current_palette = 13;
else if (!strcmp(var.value, "nintendo-vc"))
current_palette = 14;
else if (!strcmp(var.value, "yuv-v3"))
current_palette = 15;
else if (!strcmp(var.value, "unsaturated-final"))
current_palette = 16;
else if (!strcmp(var.value, "sony-cxa2025as-us"))
current_palette = 17;
else if (!strcmp(var.value, "pal"))
current_palette = 18;
else if (!strcmp(var.value, "bmf-final2"))
current_palette = 19;
else if (!strcmp(var.value, "bmf-final3"))
current_palette = 20;
else if (!strcmp(var.value, "composite-direct-fbx"))
current_palette = 21;
else if (!strcmp(var.value, "pvm-style-d93-fbx"))
current_palette = 22;
else if (!strcmp(var.value, "ntsc-hardware-fbx"))
current_palette = 23;
else if (!strcmp(var.value, "nes-classic-fbx-fs"))
current_palette = 24;
else if (!strcmp(var.value, "nescap"))
current_palette = 25;
else if (!strcmp(var.value, "raw"))
current_palette = 26;
if (current_palette != orig_value)
retro_set_custom_palette();
}
var.key = "fceumm_nospritelimit";
if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value)
{
int no_sprite_limit = (!strcmp(var.value, "enabled")) ? 1 : 0;
FCEUI_DisableSpriteLimitation(no_sprite_limit);
}
var.key = "fceumm_overclocking";
if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value)
{
bool do_reinit = false;
if (!strcmp(var.value, "disabled")
&& overclock_state != 0)
{
overclocked = 0;
skip_7bit_overclocking = 1;
extrascanlines = 0;
overclock_state = 0;
do_reinit = true;
}
else if (!strcmp(var.value, "2x")
&& overclock_state != 1)
{
overclocked = 1;
skip_7bit_overclocking = 1;
extrascanlines = 266;
overclock_state = 1;
do_reinit = true;
}
if (do_reinit && startup)
{
FCEU_KillVirtualVideo();
FCEU_InitVirtualVideo();
}
}
var.key = "fceumm_overscan";
if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value)
{
bool newval = (!strcmp(var.value, "disabled"));
if (newval != use_overscan)
{
use_overscan = newval;
geometry_update = true;
}
}
var.key = "fceumm_turbo_enable";
if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value)
{
if (!strcmp(var.value, "None"))
{
turbo_enabler = 0;
}
else if (!strcmp(var.value, "Player 1"))
{
turbo_enabler = 1;
}
else if (!strcmp(var.value, "Player 2"))
{
turbo_enabler = 2;
}
else if (!strcmp(var.value, "Both"))
{
turbo_enabler = 3;
}
}
var.key = "fceumm_turbo_delay";
if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value)
{
if (!strcmp(var.value, "1"))
{
turbo_delay = 1;
}
if (!strcmp(var.value, "2"))
{
turbo_delay = 2;
}
else if (!strcmp(var.value, "3"))
{
turbo_delay = 3;
}
else if (!strcmp(var.value, "5"))
{
turbo_delay = 5;
}
else if (!strcmp(var.value, "10"))
{
turbo_delay = 10;
}
else if (!strcmp(var.value, "15"))
{
turbo_delay = 15;
}
else if (!strcmp(var.value, "30"))
{
turbo_delay = 30;
}
else if (!strcmp(var.value, "60"))
{
turbo_delay = 60;
}
}
var.key = "fceumm_region";
if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value)
{
if (!strcmp(var.value, "Auto"))
regionoverride = 0;
else if (!strcmp(var.value, "NTSC"))
regionoverride = 1;
else if (!strcmp(var.value, "PAL"))
regionoverride = 2;
else if (!strcmp(var.value, "Dendy"))
regionoverride = 3;
}
if (regionoverride != old_regionoverride)
FCEUD_RegionOverride(regionoverride);
var.key = "fceumm_aspect";
if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value)
{
bool newval = (!strcmp(var.value, "8:7 PAR"));
if (newval != use_par)
{
use_par = newval;
geometry_update = true;
}
}
if (geometry_update)
{
retro_get_system_av_info(&av_info);
environ_cb(RETRO_ENVIRONMENT_SET_GEOMETRY, &av_info);
}
}