From 047ebc15acd10e6e64b2bcb1105861956e6c3c3e Mon Sep 17 00:00:00 2001 From: "SND\\shalma_cp" Date: Fri, 5 Nov 2010 01:28:53 +0000 Subject: Rebel Assault 2 - mdec.c - faster mdec times (1 cycle / byte) - fixes stage 6 git-svn-id: https://pcsxr.svn.codeplex.com/svn/pcsxr@59192 e17a0e51-4ae3-4d35-97c3-1a29b211df97 --- libpcsxcore/mdec.c | 39 ++++++++++++++++++++++++++++++++------- 1 file changed, 32 insertions(+), 7 deletions(-) (limited to 'libpcsxcore') diff --git a/libpcsxcore/mdec.c b/libpcsxcore/mdec.c index 2f4c565e..04476521 100644 --- a/libpcsxcore/mdec.c +++ b/libpcsxcore/mdec.c @@ -544,7 +544,9 @@ void psxDma1(u32 adr, u32 bcr, u32 chcr) { image = (u16 *)PSXM(adr); if (mdec.reg0 & MDEC0_RGB24) { // 15-b decoding - dmacnt = 0; + dmacnt = 0; + + size = size / ((16 * 16) / 2); for (; size > 0; size--, image += (16 * 16)) { mdec.rl = rl2blk(blk, mdec.rl); @@ -553,10 +555,16 @@ void psxDma1(u32 adr, u32 bcr, u32 chcr) { dmacnt++; } - // 300 blocks @ 30 fps - dmacnt = dmacnt * PSXCLK / (300 * 30); + + // macroblock size + dmacnt *= (16 * 16 * 2); + + // macroblock cycles + dmacnt *= 1; } else { // 24-b decoding - dmacnt = 0; + dmacnt = 0; + + size = size / ((24 * 16) / 2); for (; size > 0; size--, image += (24 * 16)) { mdec.rl = rl2blk(blk, mdec.rl); @@ -565,8 +573,11 @@ void psxDma1(u32 adr, u32 bcr, u32 chcr) { dmacnt++; } - // 300 blocks @ 30 fps - dmacnt = dmacnt * PSXCLK / (300 * 30); + // macroblock size + dmacnt *= (16 * 16 * 3); + + // macroblock cycles + dmacnt *= 1; } @@ -580,7 +591,21 @@ void psxDma1(u32 adr, u32 bcr, u32 chcr) { } - MDECOUTDMA_INT( dmacnt ); + /* + current mblock speed = 1 cycle / byte + + + Destruction Derby Raw = ~1-2 macroblock cycles + - no movie hang + + Rebel Assault 2 = ~0-1 macroblock cycles + - no hangs, chopped movies + + Shadow Madness = ~1-4 macroblock cycles + - smoother videos, fixes boot + */ + + MDECOUTDMA_INT( dmacnt ); mdec.reg1 |= MDEC1_BUSY; -- cgit v1.2.3