summaryrefslogtreecommitdiff
path: root/libpcsxcore/mdec.c
diff options
context:
space:
mode:
authorSND\shalma_cp <SND\shalma_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97>2010-09-05 00:40:47 +0000
committerSND\shalma_cp <SND\shalma_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97>2010-09-05 00:40:47 +0000
commit133b4ad99615539e8b5b70475617b1378e4e86fd (patch)
tree821e60fb9bced1cb3c3f32c4a223d349c964c6f2 /libpcsxcore/mdec.c
parent78e935a3e7ec856d50849b3e2a6df7949f56a634 (diff)
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
Diffstat (limited to 'libpcsxcore/mdec.c')
-rw-r--r--libpcsxcore/mdec.c27
1 files changed, 22 insertions, 5 deletions
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;
}