- size = gpuDmaChainSize(madr);
- GPU_dmaChain((u32 *)psxM, madr & 0x1fffff);
-
+ size = GPU_dmaChain((u32 *)psxM, madr & 0x1fffff);
+ if ((int)size <= 0)
+ size = gpuDmaChainSize(madr);
+ HW_GPU_STATUS &= ~PSXGPU_nBUSY;
+
+ // we don't emulate progress, just busy flag and end irq,
+ // so pretend we're already at the last block
+ HW_DMA2_MADR = SWAPu32(0xffffff);
+