psxCpu->Clear(madr, size);
// already 32-bit word size ((size * 4) / 4)
- GPUDMA_INT(size);
+ GPUDMA_INT(size / 4);
return;
case 0x01000201: // mem2vram
GPU_writeDataMem(ptr, size);
// already 32-bit word size ((size * 4) / 4)
- GPUDMA_INT(size);
+ GPUDMA_INT(size / 4);
return;
case 0x01000401: // dma chain
PSXDMA_LOG("*** DMA 2 - GPU dma chain *** %lx addr = %lx size = %lx\n", chcr, madr, bcr);
#endif
- size = gpuDmaChainSize(madr);
- GPU_dmaChain((u32 *)psxM, madr & 0x1fffff);
+ size = GPU_dmaChain((u32 *)psxM, madr & 0x1fffff);
+ if ((int)size <= 0)
+ size = gpuDmaChainSize(madr);
// Tekken 3 = use 1.0 only (not 1.5x)