cdrom: handle old savestates better
[pcsx_rearmed.git] / libpcsxcore / cdrom.c
index 7b5cdf2..b686855 100644 (file)
@@ -205,7 +205,7 @@ static void sec2msf(unsigned int s, u8 *msf) {
                cdr.Reading = 0; \
                psxRegs.interrupt &= ~(1 << PSXINT_CDREAD); \
        } \
-       cdr.StatP &= ~STATUS_READ;\
+       cdr.StatP &= ~(STATUS_READ|STATUS_SEEK);\
 }
 
 #define StopCdda() { \
@@ -1514,6 +1514,12 @@ int cdrFreeze(void *f, int Mode) {
                                SysPrintf("cdrom: fixing up old savestate\n");
                                cdr.Reg2 = 7;
                        }
+                       // also did not save Attenuator..
+                       if ((cdr.AttenuatorLeftToLeft | cdr.AttenuatorLeftToRight
+                            | cdr.AttenuatorRightToLeft | cdr.AttenuatorRightToRight) == 0)
+                       {
+                               cdr.AttenuatorLeftToLeft = cdr.AttenuatorRightToRight = 0x80;
+                       }
                }
        }