handle bad cd images better
[pcsx_rearmed.git] / libpcsxcore / cdrom.c
index 297c8ae..3bf3e03 100644 (file)
@@ -541,6 +541,9 @@ static void cdrPlayInterrupt_Autopause()
        struct SubQ *subq = (struct SubQ *)CDR_getBufferSub();
        int track_changed = 0;
        if (subq != NULL ) {
+               // update subq
+               ReadTrack( cdr.SetSectorPlay );
+
 #ifdef CDR_LOG
                CDR_LOG( "CDDA SUB - %X:%X:%X\n",
                        subq->AbsoluteAddress[0], subq->AbsoluteAddress[1], subq->AbsoluteAddress[2] );
@@ -553,7 +556,7 @@ static void cdrPlayInterrupt_Autopause()
                Tomb Raider 1 ($7)
                */
 
-               if( cdr.CurTrack < btoi( subq->TrackNumber ) )
+               if( cdr.CurTrack + 1 == btoi( subq->TrackNumber ) )
                        track_changed = 1;
        } else {
                Create_Fake_Subq();
@@ -958,6 +961,9 @@ void cdrInterrupt() {
                        subq = (struct SubQ *)CDR_getBufferSub();
 
                        if (subq != NULL) {
+                               // update subq
+                               ReadTrack( cdr.SetSectorPlay );
+
                                cdr.Result[0] = subq->TrackNumber;
                                cdr.Result[1] = subq->IndexNumber;
                                memcpy(cdr.Result + 2, subq->TrackRelativeAddress, 3);