unbreak some old savestates
[pcsx_rearmed.git] / libpcsxcore / r3000a.c
index df62725..8035dfd 100644 (file)
@@ -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) {