From f422f444ca3ef7ecac9ac2ffc2f8e227578399a3 Mon Sep 17 00:00:00 2001 From: retro-wertz Date: Thu, 7 Mar 2019 19:17:45 +0800 Subject: [PATCH] Fix show bios bootlogo core option --- frontend/libretro.c | 22 +++++++++++++++------- libpcsxcore/misc.c | 2 +- libpcsxcore/psxcommon.h | 1 + 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/frontend/libretro.c b/frontend/libretro.c index ec0065dd..2363c370 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" @@ -1582,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; } } } @@ -1622,11 +1625,16 @@ 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; + return 0; + } } input_poll_cb(); @@ -1938,7 +1946,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); diff --git a/libpcsxcore/misc.c b/libpcsxcore/misc.c index 58170cf0..bb34e5bd 100644 --- a/libpcsxcore/misc.c +++ b/libpcsxcore/misc.c @@ -180,7 +180,7 @@ int LoadCdrom() { // is just below, do it here fake_bios_gpu_setup(); - if (!Config.HLE) { + if (!Config.HLE && !Config.SlowBoot) { // skip BIOS logos psxRegs.pc = psxRegs.GPR.n.ra; return 0; diff --git a/libpcsxcore/psxcommon.h b/libpcsxcore/psxcommon.h index 9f5444ec..a7dd6aea 100644 --- a/libpcsxcore/psxcommon.h +++ b/libpcsxcore/psxcommon.h @@ -119,6 +119,7 @@ typedef struct { boolean PsxAuto; boolean Cdda; boolean HLE; + boolean SlowBoot; boolean Debug; boolean PsxOut; boolean SpuIrq; -- 2.39.5