+//Used when out by a percentage
+static float GunconAdjustRatioX = 1;
+static float GunconAdjustRatioY = 1;
+
+static void update_variables(bool in_flight)
+{
+ struct retro_variable var;
+#ifdef GPU_PEOPS
+ int gpu_peops_fix = 0;
+#endif
+
+ var.value = NULL;
+ var.key = "pcsx_rearmed_frameskip";
+ if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value)
+ pl_rearmed_cbs.frameskip = atoi(var.value);
+
+ var.value = NULL;
+ var.key = "pcsx_rearmed_region";
+ if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value)
+ {
+ Config.PsxAuto = 0;
+ if (strcmp(var.value, "auto") == 0)
+ Config.PsxAuto = 1;
+ else if (strcmp(var.value, "NTSC") == 0)
+ Config.PsxType = 0;
+ else if (strcmp(var.value, "PAL") == 0)
+ Config.PsxType = 1;
+ }
+
+ /*for (i = 0; i < PORTS_NUMBER; i++)
+ update_controller_port_variable(i);*/
+
+ update_multitap();
+
+ var.value = NULL;
+ var.key = "pcsx_rearmed_negcon_deadzone";
+ negcon_deadzone = 0;
+ if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value)
+ {
+ negcon_deadzone = (int)(atoi(var.value) * 0.01f * NEGCON_RANGE);
+ }
+
+ var.value = NULL;
+ var.key = "pcsx_rearmed_negcon_response";
+ negcon_linearity = 1;
+ if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value)
+ {
+ if (strcmp(var.value, "quadratic") == 0)
+ {
+ negcon_linearity = 2;
+ }
+ else if (strcmp(var.value, "cubic") == 0)
+ {
+ negcon_linearity = 3;
+ }
+ }
+
+ var.value = NULL;
+ var.key = "pcsx_rearmed_analog_axis_modifier";
+ axis_bounds_modifier = true;
+ if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value)
+ {
+ if (strcmp(var.value, "square") == 0)
+ {
+ axis_bounds_modifier = true;
+ }
+ else if (strcmp(var.value, "circle") == 0)
+ {
+ axis_bounds_modifier = false;
+ }
+ }
+
+ var.value = NULL;
+ var.key = "pcsx_rearmed_vibration";
+
+ if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value)
+ {
+ if (strcmp(var.value, "disabled") == 0)
+ in_enable_vibration = 0;
+ else if (strcmp(var.value, "enabled") == 0)
+ in_enable_vibration = 1;
+ }
+
+ var.value = NULL;
+ var.key = "pcsx_rearmed_dithering";
+
+ if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value)
+ {
+ if (strcmp(var.value, "disabled") == 0)
+ {
+ pl_rearmed_cbs.gpu_peops.iUseDither = 0;
+ pl_rearmed_cbs.gpu_peopsgl.bDrawDither = 0;
+ pl_rearmed_cbs.gpu_unai.dithering = 0;
+#ifdef __ARM_NEON__
+ pl_rearmed_cbs.gpu_neon.allow_dithering = 0;
+#endif
+ }
+ else if (strcmp(var.value, "enabled") == 0)
+ {
+ pl_rearmed_cbs.gpu_peops.iUseDither = 1;
+ pl_rearmed_cbs.gpu_peopsgl.bDrawDither = 1;
+ pl_rearmed_cbs.gpu_unai.dithering = 1;
+#ifdef __ARM_NEON__
+ pl_rearmed_cbs.gpu_neon.allow_dithering = 1;
+#endif
+ }
+ }
+
+#ifdef GPU_NEON
+ var.value = NULL;
+ var.key = "pcsx_rearmed_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 = "pcsx_rearmed_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 = "pcsx_rearmed_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
+
+ var.value = NULL;
+ var.key = "pcsx_rearmed_duping_enable";
+
+ if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value)
+ {
+ if (strcmp(var.value, "disabled") == 0)
+ duping_enable = false;
+ else if (strcmp(var.value, "enabled") == 0)
+ duping_enable = true;
+ }
+
+ var.value = NULL;
+ var.key = "pcsx_rearmed_display_internal_fps";
+
+ if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value)
+ {
+ if (strcmp(var.value, "disabled") == 0)
+ display_internal_fps = false;
+ else if (strcmp(var.value, "enabled") == 0)
+ display_internal_fps = true;
+ }
+
+#if defined(LIGHTREC) || defined(NEW_DYNAREC)
+ var.value = NULL;
+ var.key = "pcsx_rearmed_drc";
+
+ if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value)
+ {
+ R3000Acpu *prev_cpu = psxCpu;
+#if defined(LIGHTREC)
+ bool can_use_dynarec = found_bios;
+#else
+ bool can_use_dynarec = 1;
+#endif
+
+#ifdef _3DS
+ if (!__ctr_svchax)
+ Config.Cpu = CPU_INTERPRETER;
+ else
+#endif
+ if (strcmp(var.value, "disabled") == 0 || !can_use_dynarec)
+ 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 /* LIGHTREC || NEW_DYNAREC */
+
+ var.value = NULL;
+ var.key = "pcsx_rearmed_spu_reverb";
+
+ if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value)
+ {
+ if (strcmp(var.value, "disabled") == 0)
+ spu_config.iUseReverb = false;
+ else if (strcmp(var.value, "enabled") == 0)
+ spu_config.iUseReverb = true;
+ }
+
+ var.value = NULL;
+ var.key = "pcsx_rearmed_spu_interpolation";
+
+ if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value)
+ {
+ if (strcmp(var.value, "simple") == 0)
+ spu_config.iUseInterpolation = 1;
+ else if (strcmp(var.value, "gaussian") == 0)
+ spu_config.iUseInterpolation = 2;
+ else if (strcmp(var.value, "cubic") == 0)
+ spu_config.iUseInterpolation = 3;
+ else if (strcmp(var.value, "off") == 0)
+ spu_config.iUseInterpolation = 0;
+ }
+
+ var.value = NULL;
+ var.key = "pcsx_rearmed_pe2_fix";
+
+ if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value)
+ {
+ if (strcmp(var.value, "disabled") == 0)
+ Config.RCntFix = 0;
+ else if (strcmp(var.value, "enabled") == 0)
+ Config.RCntFix = 1;
+ }
+
+ var.value = NULL;
+ var.key = "pcsx_rearmed_idiablofix";
+
+ if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value)
+ {
+ if (strcmp(var.value, "disabled") == 0)
+ spu_config.idiablofix = 0;
+ else if (strcmp(var.value, "enabled") == 0)
+ spu_config.idiablofix = 1;
+ }
+
+ var.value = NULL;
+ var.key = "pcsx_rearmed_inuyasha_fix";
+
+ if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value)
+ {
+ if (strcmp(var.value, "disabled") == 0)
+ Config.VSyncWA = 0;
+ else if (strcmp(var.value, "enabled") == 0)
+ Config.VSyncWA = 1;
+ }
+
+#ifndef _WIN32
+ var.value = NULL;
+ var.key = "pcsx_rearmed_async_cd";
+ if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value)
+ {
+ if (strcmp(var.value, "async") == 0)
+ Config.AsyncCD = 1;
+ else
+ Config.AsyncCD = 0;
+ }
+#endif
+
+ var.value = NULL;
+ var.key = "pcsx_rearmed_noxadecoding";
+ if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value)
+ {
+ if (strcmp(var.value, "disabled") == 0)
+ Config.Xa = 1;
+ else
+ Config.Xa = 0;
+ }
+
+ var.value = NULL;
+ var.key = "pcsx_rearmed_nocdaudio";
+ if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value)
+ {
+ if (strcmp(var.value, "disabled") == 0)
+ Config.Cdda = 1;
+ else
+ Config.Cdda = 0;
+ }
+
+ var.value = NULL;
+ var.key = "pcsx_rearmed_spuirq";
+ if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value)
+ {
+ if (strcmp(var.value, "disabled") == 0)
+ Config.SpuIrq = 0;
+ else
+ Config.SpuIrq = 1;
+ }
+
+#ifdef THREAD_RENDERING
+ var.key = "pcsx_rearmed_gpu_thread_rendering";
+ var.value = NULL;
+
+ if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value)
+ {
+ if (strcmp(var.value, "disabled") == 0)
+ pl_rearmed_cbs.thread_rendering = THREAD_RENDERING_OFF;
+ else if (strcmp(var.value, "sync") == 0)
+ pl_rearmed_cbs.thread_rendering = THREAD_RENDERING_SYNC;
+ else if (strcmp(var.value, "async") == 0)
+ pl_rearmed_cbs.thread_rendering = THREAD_RENDERING_ASYNC;
+ }
+#endif