CDVD: Fix rotational delay, don't apply to seek commands.

Fixes #4955
This commit is contained in:
refractionpcsx2 2021-11-01 12:07:42 +00:00
parent 78881113b9
commit b5eed53db0
1 changed files with 5 additions and 4 deletions

View File

@ -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;