X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=libpcsxcore%2Fr3000a.c;h=fbccdea4f21929563416dd567f507a431d1e44bf;hb=f2100c3de4f1a2fcf86fb458b56d5c2978f1692f;hp=8b7cfbf775b6f5d62c33529654669eb9545f6fa5;hpb=6c62131f8b4a923e02bb8a9d8cd9f62a90fa20a7;p=pcsx_rearmed.git diff --git a/libpcsxcore/r3000a.c b/libpcsxcore/r3000a.c index 8b7cfbf7..fbccdea4 100644 --- a/libpcsxcore/r3000a.c +++ b/libpcsxcore/r3000a.c @@ -67,8 +67,13 @@ void psxReset() { psxHwReset(); psxBiosInit(); - if (!Config.HLE) + BiosLikeGPUSetup(); // a bit of a hack but whatever + + if (!Config.HLE) { psxExecuteBios(); + if (psxRegs.pc == 0x80030000 && !Config.SlowBoot) + BiosBootBypass(); + } #ifdef EMU_LOG EMU_LOG("*BIOS END*\n"); @@ -237,7 +242,13 @@ void psxJumpTest() { } void psxExecuteBios() { - while (psxRegs.pc != 0x80030000) - psxCpu->ExecuteBlock(); + int i; + for (i = 0; i < 5000000; i++) { + psxCpu->ExecuteBlock(EXEC_CALLER_BOOT); + if ((psxRegs.pc & 0xff800000) == 0x80000000) + break; + } + if (psxRegs.pc != 0x80030000) + SysPrintf("non-standard BIOS detected (%d, %08x)\n", i, psxRegs.pc); }