From 133b4ad99615539e8b5b70475617b1378e4e86fd Mon Sep 17 00:00:00 2001 From: "SND\\shalma_cp" Date: Sun, 5 Sep 2010 00:40:47 +0000 Subject: Shadow Madness needs longer DMA times (fixes Hexite Mines, World Map, random lockups) git-svn-id: https://pcsxr.svn.codeplex.com/svn/pcsxr@56822 e17a0e51-4ae3-4d35-97c3-1a29b211df97 --- libpcsxcore/mdec.c | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) (limited to 'libpcsxcore') diff --git a/libpcsxcore/mdec.c b/libpcsxcore/mdec.c index 2ad12585..fb5bff61 100644 --- a/libpcsxcore/mdec.c +++ b/libpcsxcore/mdec.c @@ -529,16 +529,16 @@ void psxDma1(u32 adr, u32 bcr, u32 chcr) { image = (u16 *)PSXM(adr); if (mdec.reg0 & MDEC0_RGB24) { // 15-b decoding - // MDECOUTDMA_INT(((size * (1000000 / 9000)) / 4) /** 4*/); - MDECOUTDMA_INT(size / 4); size = size / ((16 * 16) / 2); for (; size > 0; size--, image += (16 * 16)) { mdec.rl = rl2blk(blk, mdec.rl); yuv2rgb15(blk, image); } - } else { // 24-b decoding - // MDECOUTDMA_INT(((size * (1000000 / 9000)) / 4) /** 4*/); - MDECOUTDMA_INT(size / 4); + } else { // 24-b decoding + // Fear Effect 2 Artwork (4000+ = BIAS 1) + // Breaks: Lemmings + //MDECOUTDMA_INT( ((size / 4) / BIAS) * 4000); + size = size / ((24 * 16) / 2); for (; size > 0; size--, image += (24 * 16)) { mdec.rl = rl2blk(blk, mdec.rl); @@ -546,6 +546,23 @@ void psxDma1(u32 adr, u32 bcr, u32 chcr) { } } + /* + Absolute minimum DMA time: + + # bytes written to memory * + average cycles to create byte / + 32-bit DMA per cycle + + + Note that FF9 Dali accepts 1-75~150 + before slowdown occurs. No crash. + */ + + dmacnt = (image - (u16 *)PSXM(adr)) * 1; + + MDECOUTDMA_INT( dmacnt / 4); + + mdec.reg1 |= MDEC1_BUSY; } -- cgit v1.2.3