diff --git a/src/core/cdrom.cpp b/src/core/cdrom.cpp index 753977894..56f790294 100644 --- a/src/core/cdrom.cpp +++ b/src/core/cdrom.cpp @@ -1184,7 +1184,9 @@ void CDROM::ExecuteCommand() UpdatePositionWhileSeeking(); m_drive_state = DriveState::Resetting; - m_drive_event->Schedule(400000 + GetTicksForSeek(0)); + m_drive_event->SetIntervalAndSchedule(BASE_RESET_TICKS + GetTicksForSeek(0)); + m_seek_start_lba = m_current_lba; + m_seek_end_lba = 0; EndCommand(); return; diff --git a/src/core/cdrom.h b/src/core/cdrom.h index 805cb35ae..c2d92be81 100644 --- a/src/core/cdrom.h +++ b/src/core/cdrom.h @@ -59,6 +59,8 @@ private: RESPONSE_FIFO_SIZE = 16, DATA_FIFO_SIZE = RAW_SECTOR_OUTPUT_SIZE, NUM_SECTOR_BUFFERS = 8, + + BASE_RESET_TICKS = 400000, }; static constexpr u8 INTERRUPT_REGISTER_MASK = 0x1F; @@ -200,7 +202,8 @@ private: bool IsDriveIdle() const { return m_drive_state == DriveState::Idle; } bool IsSeeking() const { - return (m_drive_state == DriveState::SeekingLogical || m_drive_state == DriveState::SeekingPhysical); + return (m_drive_state == DriveState::SeekingLogical || m_drive_state == DriveState::SeekingPhysical || + m_drive_state == DriveState::Resetting); } bool IsReadingOrPlaying() const {