X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=frontend%2Flibretro.c;h=783f9cd2ee0ce40d6de828343ee6d12cf23cc80c;hb=570b9365c21d4e30a09b5e55c7cc94954fd4dd6d;hp=3e2c64ae48b6c830a1aa5db46dedee057156c867;hpb=87cc59de47301ff0a2e71b5ece28447ec77b0153;p=pcsx_rearmed.git diff --git a/frontend/libretro.c b/frontend/libretro.c index 3e2c64ae..783f9cd2 100644 --- a/frontend/libretro.c +++ b/frontend/libretro.c @@ -93,8 +93,12 @@ static bool found_bios; static bool display_internal_fps = false; static unsigned frame_count = 0; static bool libretro_supports_bitmasks = false; +#ifdef GPU_PEOPS static int show_advanced_gpu_peops_settings = -1; +#endif +#ifdef GPU_UNAI static int show_advanced_gpu_unai_settings = -1; +#endif static unsigned previous_width = 0; static unsigned previous_height = 0; @@ -1223,6 +1227,7 @@ static void set_retro_memmap(void) 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; @@ -1418,6 +1423,8 @@ bool retro_load_game(const struct retro_game_info *info) return false; } + update_variables(false); + if (plugins_opened) { ClosePlugins(); plugins_opened = 0; @@ -1612,7 +1619,9 @@ static void update_variables(bool in_flight) { struct retro_variable var; int i; +#ifdef GPU_PEOPS int gpu_peops_fix = 0; +#endif var.value = NULL; var.key = "pcsx_rearmed_frameskip"; @@ -1766,14 +1775,19 @@ static void update_variables(bool in_flight) 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; @@ -1846,6 +1860,18 @@ static void update_variables(bool in_flight) 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) @@ -2739,13 +2765,15 @@ void retro_init(void) 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);