+static void update_variables(bool in_flight)
+{
+ struct retro_variable var;
+
+ var.value = NULL;
+ var.key = "frameskip";
+
+ if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) || var.value)
+ pl_rearmed_cbs.frameskip = atoi(var.value);
+
+ var.value = NULL;
+ var.key = "region";
+
+ if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) || var.value)
+ {
+ Config.PsxAuto = 0;
+ if (strcmp(var.value, "Automatic") == 0)
+ Config.PsxAuto = 1;
+ else if (strcmp(var.value, "NTSC") == 0)
+ Config.PsxType = 0;
+ else if (strcmp(var.value, "PAL") == 0)
+ Config.PsxType = 1;
+ }
+
+ var.value = NULL;
+ var.key = "pad1type";
+
+ if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) || var.value)
+ {
+ in_type1 = PSE_PAD_TYPE_STANDARD;
+ if (strcmp(var.value, "analog") == 0)
+ in_type1 = PSE_PAD_TYPE_ANALOGPAD;
+ }
+
+#ifdef __ARM_NEON__
+ var.value = "NULL";
+ var.key = "neon_interlace_enable";
+
+ if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) || var.value)
+ {
+ if (strcmp(var.value, "disabled") == 0)
+ pl_rearmed_cbs.gpu_neon.allow_interlace = 0;
+ else if (strcmp(var.value, "enabled") == 0)
+ pl_rearmed_cbs.gpu_neon.allow_interlace = 1;
+ }
+
+ var.value = NULL;
+ var.key = "neon_enhancement_enable";
+
+ if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) || var.value)
+ {
+ if (strcmp(var.value, "disabled") == 0)
+ pl_rearmed_cbs.gpu_neon.enhancement_enable = 0;
+ else if (strcmp(var.value, "enabled") == 0)
+ pl_rearmed_cbs.gpu_neon.enhancement_enable = 1;
+ }
+
+ var.value = NULL;
+ var.key = "neon_enhancement_no_main";
+
+ if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) || var.value)
+ {
+ if (strcmp(var.value, "disabled") == 0)
+ pl_rearmed_cbs.gpu_neon.enhancement_no_main = 0;
+ else if (strcmp(var.value, "enabled") == 0)
+ pl_rearmed_cbs.gpu_neon.enhancement_no_main = 1;
+ }
+#endif
+#ifndef DRC_DISABLE
+ var.value = NULL;
+ var.key = "rearmed_drc";
+
+ if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) || var.value)
+ {
+ R3000Acpu *prev_cpu = psxCpu;
+
+ if (strcmp(var.value, "disabled") == 0)
+ Config.Cpu = CPU_INTERPRETER;
+ else if (strcmp(var.value, "enabled") == 0)
+ Config.Cpu = CPU_DYNAREC;
+
+ psxCpu = (Config.Cpu == CPU_INTERPRETER) ? &psxInt : &psxRec;
+ if (psxCpu != prev_cpu) {
+ prev_cpu->Shutdown();
+ psxCpu->Init();
+ psxCpu->Reset(); // not really a reset..
+ }
+ }
+#endif
+
+ if (in_flight) {
+ // inform core things about possible config changes
+ plugin_call_rearmed_cbs();
+
+ if (GPU_open != NULL && GPU_close != NULL) {
+ GPU_close();
+ GPU_open(&gpuDisp, "PCSX", NULL);
+ }
+
+ dfinput_activate();
+ }
+}
+