X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=libpcsxcore%2Fpsxdma.c;h=c0aee7ed4938cf422076e43a9d7ea58d0db9a6e4;hb=27f734f970b95071264238cd1382632d880b4611;hp=31424b3dd3ec1530e4b0a54f751660ba36b7d004;hpb=38266cd6b0f79b210b4eae9ebd20151eb522d9d3;p=pcsx_rearmed.git diff --git a/libpcsxcore/psxdma.c b/libpcsxcore/psxdma.c index 31424b3d..c0aee7ed 100644 --- a/libpcsxcore/psxdma.c +++ b/libpcsxcore/psxdma.c @@ -64,6 +64,9 @@ void psxDma4(u32 madr, u32 bcr, u32 chcr) { // SPU break; SPU_writeDMAMem(ptr, words_copy * 2, psxRegs.cycle); HW_DMA4_MADR = SWAPu32(madr + words_copy * 2); + // This should be much slower, like 12+ cycles/byte, it's like + // that because the CPU runs too fast and fifo is not emulated. + // See also set_dma_end(). SPUDMA_INT(words * 4); return; @@ -238,7 +241,7 @@ void psxDma6(u32 madr, u32 bcr, u32 chcr) { mem = getDmaRam(madr, &words_max); if (mem == INVALID_PTR) { log_unhandled("bad6 dma madr %x\n", madr); - HW_DMA6_CHCR &= SWAP32(~0x01000000); + HW_DMA6_CHCR &= SWAP32(~0x11000000); DMA_INTERRUPT(6); return; } @@ -263,7 +266,7 @@ void psxDma6(u32 madr, u32 bcr, u32 chcr) { log_unhandled("*** DMA6 OT - unknown *** %x addr = %x size = %x\n", chcr, madr, bcr); } - HW_DMA6_CHCR &= SWAP32(~0x01000000); + HW_DMA6_CHCR &= SWAP32(~0x11000000); DMA_INTERRUPT(6); } @@ -271,7 +274,7 @@ void gpuotcInterrupt() { if (HW_DMA6_CHCR & SWAP32(0x01000000)) { - HW_DMA6_CHCR &= SWAP32(~0x01000000); + HW_DMA6_CHCR &= SWAP32(~0x11000000); DMA_INTERRUPT(6); } }