summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSND\shalma_cp <SND\shalma_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97>2010-11-05 01:28:53 +0000
committerSND\shalma_cp <SND\shalma_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97>2010-11-05 01:28:53 +0000
commit047ebc15acd10e6e64b2bcb1105861956e6c3c3e (patch)
tree8dcbdf979a2d216f23d855c266da74d2734e6e6e
parentff6c04a6bb5c60ac7187a388092eb615cf98e65e (diff)
downloadpcsxr-047ebc15acd10e6e64b2bcb1105861956e6c3c3e.tar.gz
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
-rw-r--r--libpcsxcore/mdec.c39
1 files changed, 32 insertions, 7 deletions
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;