From b5eed53db0713555b2d331f69225a2074f3e6f46 Mon Sep 17 00:00:00 2001 From: refractionpcsx2 Date: Mon, 1 Nov 2021 12:07:42 +0000 Subject: [PATCH] CDVD: Fix rotational delay, don't apply to seek commands. Fixes #4955 --- pcsx2/CDVD/CDVD.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/pcsx2/CDVD/CDVD.cpp b/pcsx2/CDVD/CDVD.cpp index d547257b8e..0bcc1c41b5 100644 --- a/pcsx2/CDVD/CDVD.cpp +++ b/pcsx2/CDVD/CDVD.cpp @@ -1292,12 +1292,13 @@ static uint cdvdStartSeek(uint newsector, CDVD_MODE_TYPE mode) } } - if (delta) + // Only do this on reads, the seek kind of accounts for this and then it reads the sectors after + if (delta && cdvd.nCommand != N_CD_SEEK) { int rotationalLatency = cdvdRotationalLatency((CDVD_MODE_TYPE)cdvdIsDVD()); - //DevCon.Warning("%s rotational latency at sector %d is %d cycles", (cdvd.SpindlCtrl & CDVD_SPINDLE_CAV) ? "CAV" : "CLV", cdvd.SeekToSector, rotationalLatency); - seektime += rotationalLatency; - CDVDSECTORREADY_INT(cdvd.ReadTime + seektime + rotationalLatency); + DevCon.Warning("%s rotational latency at sector %d is %d cycles", (cdvd.SpindlCtrl & CDVD_SPINDLE_CAV) ? "CAV" : "CLV", cdvd.SeekToSector, rotationalLatency); + seektime += rotationalLatency + cdvd.ReadTime; + CDVDSECTORREADY_INT(seektime); seektime += (cdvd.BlockSize / 4); } return seektime;