environ_cb(RETRO_ENVIRONMENT_SET_MEMORY_MAPS, &retromap);
}
+static void update_variables(bool in_flight);
bool retro_load_game(const struct retro_game_info *info)
{
size_t i;
return false;
}
+ update_variables(false);
+
if (plugins_opened) {
ClosePlugins();
plugins_opened = 0;
if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) || var.value)
{
- R3000Acpu *prev_cpu = psxCpu;
+ 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)
+ if (strcmp(var.value, "disabled") == 0 || !can_use_dynarec)
Config.Cpu = CPU_INTERPRETER;
else if (strcmp(var.value, "enabled") == 0)
Config.Cpu = CPU_DYNAREC;
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 (environ_cb(RETRO_ENVIRONMENT_GET_INPUT_BITMASKS, NULL))
libretro_supports_bitmasks = true;
- update_variables(false);
check_system_specs();
}
void retro_deinit(void)
{
- ClosePlugins();
+ if (plugins_opened) {
+ ClosePlugins();
+ plugins_opened = 0;
+ }
SysClose();
#ifdef _3DS
linearFree(vout_buf);