X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=frontend%2Flibretro.c;h=bc56ff86a50a192f7f052f6b6d3a0d6f98196c1c;hb=b8d1fb0981058cc8dba7ab45d90f480663bf1ab4;hp=5e5d88c662cb0aa623f431295428035fdda88522;hpb=79f29e0a90de800f4dc8b07c4ff4957e6ed6e7f3;p=pcsx_rearmed.git diff --git a/frontend/libretro.c b/frontend/libretro.c index 5e5d88c6..bc56ff86 100644 --- a/frontend/libretro.c +++ b/frontend/libretro.c @@ -22,6 +22,7 @@ #include "../libpcsxcore/cdrom.h" #include "../libpcsxcore/cdriso.h" #include "../libpcsxcore/cheat.h" +#include "../libpcsxcore/r3000a.h" #include "../plugins/dfsound/out.h" #include "../plugins/dfsound/spu_config.h" #include "../plugins/dfinput/externals.h" @@ -1289,7 +1290,10 @@ bool retro_load_game(const struct retro_game_info *info) return false; } - SysReset(); + /* TODO: Calling SysReset() outside retro_run for some system + * causes RetroArch to freeze, e.g Ludo */ + //SysReset(); + rebootemu = 1; if (LoadCdrom() == -1) { log_cb(RETRO_LOG_INFO, "could not load CD\n"); @@ -1579,7 +1583,9 @@ static void update_variables(bool in_flight) if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) || var.value) { if (strcmp(var.value, "enabled") == 0) - rebootemu = 1; + Config.SlowBoot = 1; + else + Config.SlowBoot = 0; } } } @@ -1619,11 +1625,15 @@ static uint16_t get_analog_button(retro_input_state_t input_state_cb, int player void retro_run(void) { - int i; - //SysReset must be run while core is running,Not in menu (Locks up Retroarch) - if(rebootemu != 0){ - rebootemu = 0; - SysReset(); + int i; + //SysReset must be run while core is running,Not in menu (Locks up Retroarch) + if (rebootemu != 0) { + rebootemu = 0; + SysReset(); + if (!Config.HLE && !Config.SlowBoot) { + // skip BIOS logos + psxRegs.pc = psxRegs.GPR.n.ra; + } } input_poll_cb(); @@ -1935,7 +1945,7 @@ void retro_init(void) #endif vout_buf_ptr = vout_buf; - + if (environ_cb(RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY, &dir) && dir) { snprintf(Config.BiosDir, sizeof(Config.BiosDir), "%s", dir);