CDROM: Track seek position when resetting
Fixes Blasto hanging after starting game.
This commit is contained in:
parent
d1a2ebd8f3
commit
50a25b63b1
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue