From 6bed14cb263e16eecd532023ecc95671e50571b1 Mon Sep 17 00:00:00 2001 From: refractionpcsx2 Date: Sun, 3 Oct 2021 20:50:30 +0100 Subject: [PATCH] CDVD: Time reads by sectors per second instead of bytes --- pcsx2/CDVD/CDVD.cpp | 6 ++++-- pcsx2/CDVD/CDVD_internal.h | 3 +++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/pcsx2/CDVD/CDVD.cpp b/pcsx2/CDVD/CDVD.cpp index f7d31617fc..d3cc58e9f9 100644 --- a/pcsx2/CDVD/CDVD.cpp +++ b/pcsx2/CDVD/CDVD.cpp @@ -689,11 +689,13 @@ static uint cdvdBlockReadTime(CDVD_MODE_TYPE mode) const float sectorSpeed = (((float)(cdvd.SeekToSector - offset) / numSectors) * 0.60f) + 0.40f; - return ((PSXCLK * cdvd.BlockSize) / ((float)(((mode == MODE_CDROM) ? PSX_CD_READSPEED : PSX_DVD_READSPEED) * cdvd.Speed) * sectorSpeed)); + return (PSXCLK / ((((mode == MODE_CDROM) ? CD_SECTORS_PERSECOND : DVD_SECTORS_PERSECOND) * cdvd.Speed) * sectorSpeed)); + //return ((PSXCLK * cdvd.BlockSize) / ((float)(((mode == MODE_CDROM) ? PSX_CD_READSPEED : PSX_DVD_READSPEED) * cdvd.Speed) * sectorSpeed)); } // CLV Read Speed is constant - return ((PSXCLK * cdvd.BlockSize) / (float)(((mode == MODE_CDROM) ? PSX_CD_READSPEED : PSX_DVD_READSPEED) * cdvd.Speed)); + //return ((PSXCLK * cdvd.BlockSize) / (float)(((mode == MODE_CDROM) ? PSX_CD_READSPEED : PSX_DVD_READSPEED) * cdvd.Speed)); + return (PSXCLK / (((mode == MODE_CDROM) ? CD_SECTORS_PERSECOND : DVD_SECTORS_PERSECOND) * cdvd.Speed)); } void cdvdReset() diff --git a/pcsx2/CDVD/CDVD_internal.h b/pcsx2/CDVD/CDVD_internal.h index 70df0f685b..a4ef4a795a 100644 --- a/pcsx2/CDVD/CDVD_internal.h +++ b/pcsx2/CDVD/CDVD_internal.h @@ -132,6 +132,9 @@ static const uint tbl_ContigiousSeekDelta[3] = static const uint PSX_CD_READSPEED = 153600; // Bytes per second, rough values from outer CD (CAV). static const uint PSX_DVD_READSPEED = 1382400; // Bytes per second, rough values from outer DVD (CAV). +static const uint CD_SECTORS_PERSECOND = 75; +static const uint DVD_SECTORS_PERSECOND = 675; + // Legacy Note: FullSeek timing causes many games to load very slow, but it likely not the real problem. // Games breaking with it set to PSXCLK*40 : "wrath unleashed" and "Shijou Saikyou no Deshi Kenichi".