psxbios: some more details
[pcsx_rearmed.git] / libpcsxcore / r3000a.c
index 9b47936..69772d4 100644 (file)
@@ -264,7 +264,7 @@ static void psxScheduleIrq10One(u32 cycles_abs) {
        psxRegs.interrupt |= 1 << PSXINT_IRQ10;
        psxRegs.intCycle[PSXINT_IRQ10].cycle = c;
        psxRegs.intCycle[PSXINT_IRQ10].sCycle = rcnts[3].cycleStart;
-       new_dyna_set_event(PSXINT_IRQ10, c);
+       new_dyna_set_event_abs(PSXINT_IRQ10, cycles_abs);
 }
 
 void irq10Interrupt() {
@@ -280,8 +280,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) {