- if (irq && (spu.spuCtrl & CTRL_IRQ)) // unhandled because need to implement delay\r
- log_unhandled("wdma spu irq: %x/%x+%x\n", irq_addr, spu.spuAddr, iSize * 2);\r
+ if ((spu.spuCtrl & CTRL_IRQ) && irq_after < iSize * 2) {\r
+ log_unhandled("wdma spu irq: %x/%x+%x (%u)\n",\r
+ irq_addr, spu.spuAddr, iSize * 2, irq_after);\r
+ // this should be consistent with psxdma.c timing\r
+ // might also need more delay like in set_dma_end()\r
+ do_irq_io(irq_after);\r
+ }\r