+ if (HW_DMA2_CHCR == SWAP32(0x01000401) && !(HW_DMA2_MADR & SWAP32(0x800000)))
+ {
+ u32 size, madr_next = 0xffffff;
+ size = GPU_dmaChain((u32 *)psxM, HW_DMA2_MADR & 0x1fffff, &madr_next);
+ HW_DMA2_MADR = SWAPu32(madr_next);
+ GPUDMA_INT(size);
+ return;
+ }
+ if (HW_DMA2_CHCR & SWAP32(0x01000000))
+ {
+ HW_DMA2_CHCR &= SWAP32(~0x01000000);
+ DMA_INTERRUPT(2);
+ }
+ HW_GPU_STATUS |= SWAP32(PSXGPU_nBUSY); // GPU no longer busy