X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=libpcsxcore%2Fspu.c;h=56a1de3bbef574e86cfdd825ead538792e6c9a5b;hb=b54a1ac7cfa3f045afef2e04d3e255884c3d5ef0;hp=90d2f4dbdc51f0cace3d14d0aadc18e4041e71a8;hpb=650adfd2da779ba8855623362c2900583e22931e;p=pcsx_rearmed.git diff --git a/libpcsxcore/spu.c b/libpcsxcore/spu.c index 90d2f4db..56a1de3b 100644 --- a/libpcsxcore/spu.c +++ b/libpcsxcore/spu.c @@ -22,17 +22,24 @@ */ #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() {