eliminate event code duplication
[pcsx_rearmed.git] / libpcsxcore / mdec.c
index ca42458..c0f2cfd 100644 (file)
@@ -476,6 +476,7 @@ void psxDma0(u32 adr, u32 bcr, u32 chcr) {
        int size;
 
        if (chcr != 0x01000201) {
+               log_unhandled("mdec0: invalid dma %08x\n", chcr);
                return;
        }
 
@@ -524,7 +525,7 @@ void psxDma0(u32 adr, u32 bcr, u32 chcr) {
                        break;
        }
 
-       MDECINDMA_INT(size);
+       set_event(PSXINT_MDECINDMA, size);
 }
 
 void mdec0Interrupt()
@@ -545,7 +546,10 @@ void psxDma1(u32 adr, u32 bcr, u32 chcr) {
        int size;
        u32 words;
 
-       if (chcr != 0x01000200) return;
+       if (chcr != 0x01000200) {
+               log_unhandled("mdec1: invalid dma %08x\n", chcr);
+               return;
+       }
 
        words = (bcr >> 16) * (bcr & 0xffff);
        /* size in byte */
@@ -621,7 +625,7 @@ void psxDma1(u32 adr, u32 bcr, u32 chcr) {
        }
        
                /* define the power of mdec */
-               MDECOUTDMA_INT(words * MDEC_BIAS);
+               set_event(PSXINT_MDECOUTDMA, words * MDEC_BIAS);
                /* some CPU stalling */
                psxRegs.cycle += words;
        }
@@ -670,27 +674,26 @@ void mdec1Interrupt() {
 }
 
 int mdecFreeze(void *f, int Mode) {
-       u8 *base = (u8 *)&psxM[0x100000];
+       u8 *base = (u8 *)psxM;
        u32 v;
 
        gzfreeze(&mdec.reg0, sizeof(mdec.reg0));
        gzfreeze(&mdec.reg1, sizeof(mdec.reg1));
 
-       // old code used to save raw pointers..
        v = (u8 *)mdec.rl - base;
        gzfreeze(&v, sizeof(v));
-       mdec.rl = (u16 *)(base + (v & 0xffffe));
+       mdec.rl = (u16 *)(base + (v & 0x1ffffe));
        v = (u8 *)mdec.rl_end - base;
        gzfreeze(&v, sizeof(v));
-       mdec.rl_end = (u16 *)(base + (v & 0xffffe));
+       mdec.rl_end = (u16 *)(base + (v & 0x1ffffe));
 
        v = 0;
        if (mdec.block_buffer_pos)
-               v = mdec.block_buffer_pos - base;
+               v = mdec.block_buffer_pos - mdec.block_buffer;
        gzfreeze(&v, sizeof(v));
        mdec.block_buffer_pos = 0;
-       if (v)
-               mdec.block_buffer_pos = base + (v & 0xfffff);
+       if (v && v < sizeof(mdec.block_buffer))
+               mdec.block_buffer_pos = mdec.block_buffer;
 
        gzfreeze(&mdec.block_buffer, sizeof(mdec.block_buffer));
        gzfreeze(&mdec.pending_dma1, sizeof(mdec.pending_dma1));