static void check_variables()

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);
   }
}