X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?p=pcsx_rearmed.git;a=blobdiff_plain;f=libpcsxcore%2Fcdrom.c;h=1d581e4cda213292f0343a2251428e11bd211d91;hp=1aa958b0642ae99e301d487e7d0f138ee930b190;hb=603efa29ac7176c5dc27cab52007d4c9f61c3069;hpb=8e1040b6a82ee1802fda83d4de84290a02656cc0 diff --git a/libpcsxcore/cdrom.c b/libpcsxcore/cdrom.c index 1aa958b0..1d581e4c 100644 --- a/libpcsxcore/cdrom.c +++ b/libpcsxcore/cdrom.c @@ -557,6 +557,8 @@ static void cdrPlayInterrupt_Autopause() Tomb Raider 1 ($7) */ + // .. + 1 is probably wrong, but deals with corrupted subq + good checksum + // (how does real thing handle those?) if( cdr.CurTrack + 1 == btoi( subq->TrackNumber ) ) track_changed = 1; } else { @@ -586,13 +588,14 @@ static void cdrPlayInterrupt_Autopause() StopCdda(); } - if (cdr.Mode & MODE_REPORT) { + else if (cdr.Mode & MODE_REPORT) { if (subq != NULL) { #ifdef CDR_LOG CDR_LOG( "REPPLAY SUB - %X:%X:%X\n", subq->AbsoluteAddress[0], subq->AbsoluteAddress[1], subq->AbsoluteAddress[2] ); #endif - cdr.CurTrack = btoi( subq->TrackNumber ); + // breaks when .sub doesn't have index 0 for some reason (bad rip?) + //cdr.CurTrack = btoi( subq->TrackNumber ); if (subq->AbsoluteAddress[2] & 0xf) return; @@ -783,7 +786,7 @@ void cdrInterrupt() { cdr.SetSectorPlay[2] = cdr.ResultTD[0]; // reset data - Set_Track(); + //Set_Track(); Find_CurTrack(); ReadTrack( cdr.SetSectorPlay ); @@ -962,8 +965,9 @@ void cdrInterrupt() { subq = (struct SubQ *)CDR_getBufferSub(); if (subq != NULL) { - // update subq - ReadTrack( cdr.SetSectorPlay ); + if( cdr.Play && (cdr.Mode & MODE_CDDA) && !(cdr.Mode & (MODE_AUTOPAUSE|MODE_REPORT)) ) + // update subq + ReadTrack( cdr.SetSectorPlay ); cdr.Result[0] = subq->TrackNumber; cdr.Result[1] = subq->IndexNumber;