cdrom: tune and log stat hack
[pcsx_rearmed.git] / libpcsxcore / cdrom.c
index 60f03e7..d7e36cc 100644 (file)
@@ -650,13 +650,18 @@ static void cdrPlayInterrupt_Autopause()
 void cdrPlayInterrupt()
 {
        if (cdr.Seeked == SEEK_DOING_CMD) {
+               if (cdr.Stat) {
+                       SysPrintf("cdrom: seek stat hack\n");
+                       CDRMISC_INT(0x1000);
+                       return;
+               }
                SetResultSize(1);
                cdr.StatP |= STATUS_ROTATING;
                cdr.StatP &= ~STATUS_SEEK;
                cdr.Result[0] = cdr.StatP;
                if (cdr.Irq == 0 || cdr.Irq == 0xff) {
                        cdr.Stat = Complete;
-                       if (cdr.Stat != NoIntr)
+                       if (cdr.Reg2 != 0x18)
                                psxHu32ref(0x1070) |= SWAP32(0x4);
                }
 
@@ -704,7 +709,8 @@ void cdrInterrupt() {
 
        // Reschedule IRQ
        if (cdr.Stat) {
-               CDR_INT( 0x100 );
+               SysPrintf("cdrom: stat hack: %02x %x\n", cdr.Irq, cdr.Stat);
+               CDR_INT(0x1000);
                return;
        }
 
@@ -1294,7 +1300,8 @@ void cdrReadInterrupt() {
                return;
 
        if (cdr.Irq || cdr.Stat) {
-               CDREAD_INT(0x100);
+               SysPrintf("cdrom: read stat hack %02x %x\n", cdr.Irq, cdr.Stat);
+               CDREAD_INT(0x1000);
                return;
        }
 
@@ -2072,7 +2079,7 @@ void cdrReset() {
        cdr.AttenuatorRight[1] = 0x00;
 }
 
-int cdrFreeze(gzFile f, int Mode) {
+int cdrFreeze(void *f, int Mode) {
        u32 tmp;
 
        if( Mode == 0 ) {