X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=libpcsxcore%2Fspu.c;h=90d2f4dbdc51f0cace3d14d0aadc18e4041e71a8;hb=HEAD;hp=f23051ec2d81b62e01029d98c0bcdf04a33b69d3;hpb=2b30c1291db9d9801d51cf85f71f40fe54958898;p=pcsx_rearmed.git diff --git a/libpcsxcore/spu.c b/libpcsxcore/spu.c index f23051ec..56a1de3b 100644 --- a/libpcsxcore/spu.c +++ b/libpcsxcore/spu.c @@ -22,19 +22,26 @@ */ #include "spu.h" +#include "psxevents.h" -void CALLBACK SPUirq(void) { +void CALLBACK SPUirq(int cycles_after) { + if (cycles_after > 0) { + set_event(PSXINT_SPU_IRQ, cycles_after); + return; + } + + psxHu32ref(0x1070) |= SWAPu32(0x200); +} + +void spuDelayedIrq() { psxHu32ref(0x1070) |= SWAPu32(0x200); } // spuUpdate void CALLBACK SPUschedule(unsigned int cycles_after) { - psxRegs.interrupt |= (1 << PSXINT_SPU_UPDATE); - psxRegs.intCycle[PSXINT_SPU_UPDATE].cycle = cycles_after; - psxRegs.intCycle[PSXINT_SPU_UPDATE].sCycle = psxRegs.cycle; - new_dyna_set_event(PSXINT_SPU_UPDATE, cycles_after); + set_event(PSXINT_SPU_UPDATE, cycles_after); } void spuUpdate() { - SPU_async(psxRegs.cycle); + SPU_async(psxRegs.cycle, 0); }