X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=libpcsxcore%2Fcdrom.c;h=ea973081d56bf25e5f39be48b62ea0bec9ed7407;hb=50ae51487697da0d2f9c93295f89d2f10694b6d8;hp=016b9939c7a43e47ebbe42db7d1a95148bac2a57;hpb=2da09dae586e9677b0ff3bfc1ce746b9ea6c9479;p=pcsx_rearmed.git diff --git a/libpcsxcore/cdrom.c b/libpcsxcore/cdrom.c index 016b9939..ea973081 100644 --- a/libpcsxcore/cdrom.c +++ b/libpcsxcore/cdrom.c @@ -451,7 +451,6 @@ static void cdrPlayInterrupt_Autopause() StopCdda(); } else if (((cdr.Mode & MODE_REPORT) || cdr.FastForward || cdr.FastBackward)) { - CDR_readCDDA(cdr.SetSectorPlay[0], cdr.SetSectorPlay[1], cdr.SetSectorPlay[2], (u8 *)read_buf); cdr.Result[0] = cdr.StatP; cdr.Result[1] = cdr.subq.Track; cdr.Result[2] = cdr.subq.Index; @@ -527,13 +526,14 @@ void cdrPlayInterrupt() StopCdda(); cdr.TrackChanged = TRUE; } + else { + CDR_readCDDA(cdr.SetSectorPlay[0], cdr.SetSectorPlay[1], cdr.SetSectorPlay[2], (u8 *)read_buf); + } if (!cdr.Irq && !cdr.Stat && (cdr.Mode & (MODE_AUTOPAUSE|MODE_REPORT))) cdrPlayInterrupt_Autopause(); - if (!cdr.Play) return; - - if (CDR_readCDDA && !cdr.Muted && cdr.Mode & MODE_REPORT) { + if (CDR_readCDDA && !cdr.Muted && !Config.Cdda) { cdrAttenuate(read_buf, CD_FRAMESIZE_RAW / 4, 1); if (SPU_playCDDAchannel) SPU_playCDDAchannel(read_buf, CD_FRAMESIZE_RAW); @@ -775,7 +775,7 @@ void cdrInterrupt() { * Mednafen's timing don't work for Gundam Battle Assault 2 in PAL/50hz mode, * seems to be timing sensitive as it can depend on the CPU's clock speed. * */ - if (cdr.DriveState != DRIVESTATE_STANDBY) + if (cdr.DriveState == DRIVESTATE_STANDBY) { delay = 7000; } @@ -841,9 +841,6 @@ void cdrInterrupt() { case CdlGetlocP: SetResultSize(8); memcpy(&cdr.Result, &cdr.subq, 8); - - if (!cdr.Play && !cdr.Reading) - cdr.Result[1] = 0; // HACK? break; case CdlReadT: // SetSession? @@ -1284,8 +1281,8 @@ unsigned char cdrRead0(void) { if (cdr.OCUP) cdr.Ctrl |= 0x40; -// else -// cdr.Ctrl &= ~0x40; + else + cdr.Ctrl &= ~0x40; // What means the 0x10 and the 0x08 bits? I only saw it used by the bios cdr.Ctrl |= 0x18; @@ -1381,6 +1378,7 @@ unsigned char cdrRead2(void) { unsigned char ret; if (cdr.Readed == 0) { + cdr.OCUP = 0; ret = 0; } else { ret = *pTransfer++;