#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"
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");
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;
}
}
}
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();
#endif
vout_buf_ptr = vout_buf;
-
+
if (environ_cb(RETRO_ENVIRONMENT_GET_SYSTEM_DIRECTORY, &dir) && dir)
{
snprintf(Config.BiosDir, sizeof(Config.BiosDir), "%s", dir);