From: Autechre Date: Mon, 16 Aug 2021 05:14:52 +0000 (+0200) Subject: Merge pull request #536 from gameblabla/cdrom_fixes X-Git-Tag: r24l~574 X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3918505613cb814f8f5e0e8e0471f7b2a2cd8464;hp=-c;p=pcsx_rearmed.git Merge pull request #536 from gameblabla/cdrom_fixes CDRom timings changes --- 3918505613cb814f8f5e0e8e0471f7b2a2cd8464 diff --combined libpcsxcore/cdrom.c index 43d25d38,16b7ca1a..47d45cd0 --- a/libpcsxcore/cdrom.c +++ b/libpcsxcore/cdrom.c @@@ -496,6 -496,7 +496,7 @@@ void cdrPlayInterrupt( if (cdr.SetlocPending) { memcpy(cdr.SetSectorPlay, cdr.SetSector, 4); cdr.SetlocPending = 0; + cdr.m_locationChanged = TRUE; } Find_CurTrack(cdr.SetSectorPlay); ReadTrack(cdr.SetSectorPlay); @@@ -527,7 -528,15 +528,15 @@@ } } - CDRMISC_INT(cdReadTime); + if (cdr.m_locationChanged) + { + CDRMISC_INT(cdReadTime * 30); + cdr.m_locationChanged = FALSE; + } + else + { + CDRMISC_INT(cdReadTime); + } // update for CdlGetlocP/autopause generate_subq(cdr.SetSectorPlay); @@@ -589,6 -598,7 +598,7 @@@ void cdrInterrupt() if (cdr.SetlocPending) { memcpy(cdr.SetSectorPlay, cdr.SetSector, 4); cdr.SetlocPending = 0; + cdr.m_locationChanged = TRUE; } // BIOS CD Player @@@ -878,8 -888,7 +888,8 @@@ } cdr.Result[0] |= (cdr.Result[1] >> 4) & 0x08; - strncpy((char *)&cdr.Result[4], "PCSX", 4); + /* This adds the string "PCSX" in Playstation bios boot screen */ + memcpy((char *)&cdr.Result[4], "PCSX", 4); cdr.Stat = Complete; break; @@@ -915,6 -924,7 +925,7 @@@ if(seekTime > 1000000) seekTime = 1000000; memcpy(cdr.SetSectorPlay, cdr.SetSector, 4); cdr.SetlocPending = 0; + cdr.m_locationChanged = TRUE; } Find_CurTrack(cdr.SetSectorPlay); @@@ -1131,7 -1141,13 +1142,13 @@@ void cdrReadInterrupt() cdr.Readed = 0; - CDREAD_INT((cdr.Mode & MODE_SPEED) ? (cdReadTime / 2) : cdReadTime); + uint32_t delay = (cdr.Mode & MODE_SPEED) ? (cdReadTime / 2) : cdReadTime; + if (cdr.m_locationChanged) { + CDREAD_INT(delay * 30); + cdr.m_locationChanged = FALSE; + } else { + CDREAD_INT(delay); + } /* Croc 2: $40 - only FORM1 (*) @@@ -1469,6 -1485,8 +1486,8 @@@ void cdrReset() cdr.DriveState = DRIVESTATE_STANDBY; cdr.StatP = STATUS_ROTATING; pTransfer = cdr.Transfer; + cdr.SetlocPending = 0; + cdr.m_locationChanged = FALSE; // BIOS player - default values cdr.AttenuatorLeftToLeft = 0x80;