X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=libpcsxcore%2Fr3000a.c;h=8035dfd13bb289f6cc93ce0029d75ec6e527b418;hb=de74f59932e94887debf30e5ec437d7f63591f74;hp=df627251eb9b7fb9f93427d0972bed89ea08ede3;hpb=a004140ae8cfc83a3741efeed9ed867908d6a026;p=pcsx_rearmed.git diff --git a/libpcsxcore/r3000a.c b/libpcsxcore/r3000a.c index df627251..8035dfd1 100644 --- a/libpcsxcore/r3000a.c +++ b/libpcsxcore/r3000a.c @@ -26,6 +26,7 @@ #include "mdec.h" #include "gte.h" #include "psxinterpreter.h" +#include "psxbios.h" #include "../include/compiler_features.h" R3000Acpu *psxCpu = NULL; @@ -210,6 +211,8 @@ void psxBranchTest() { psxRegs.CP0.n.Cause |= 0x400; if (((psxRegs.CP0.n.Cause | 1) & psxRegs.CP0.n.SR & 0x401) == 0x401) psxException(0, 0, &psxRegs.CP0); + else if (unlikely(psxRegs.pc == psxRegs.biosBranchCheck)) + psxBiosCheckBranch(); } void psxJumpTest() { @@ -280,8 +283,11 @@ void irq10Interrupt() { irq10count, psxRegs.cycle - prevc, (psxRegs.CP0.n.SR & 0x401) != 0x401, !(psxHu32(0x1074) & 0x400)); #endif - if (--irq10count > 0) - psxScheduleIrq10One(prevc + PSXCLK / 60 / 263); + if (--irq10count > 0) { + u32 cycles_per_line = Config.PsxType + ? PSXCLK / 50 / 314 : PSXCLK / 60 / 263; + psxScheduleIrq10One(prevc + cycles_per_line); + } } void psxScheduleIrq10(int irq_count, int x_cycles, int y) {