CDROM: Don't lose INT1 interrupts from command execution

This commit is contained in:
Connor McLaughlin 2019-11-12 18:02:36 +10:00
parent 6a82333d8f
commit 90cf6b8b41

View file

@ -367,6 +367,8 @@ void CDROM::WriteRegister(u32 offset, u8 value)
{ {
if (HasPendingAsyncInterrupt()) if (HasPendingAsyncInterrupt())
DeliverAsyncInterrupt(); DeliverAsyncInterrupt();
else if (HasPendingCommand())
m_system->SetDowncount(m_command_remaining_ticks);
} }
// Bit 6 clears the parameter FIFO. // Bit 6 clears the parameter FIFO.
@ -525,7 +527,7 @@ TickCount CDROM::GetTicksForSeek() const
void CDROM::Execute(TickCount ticks) void CDROM::Execute(TickCount ticks)
{ {
if (HasPendingCommand()) if (HasPendingCommand() && !HasPendingInterrupt())
{ {
m_command_remaining_ticks -= ticks; m_command_remaining_ticks -= ticks;
if (m_command_remaining_ticks <= 0) if (m_command_remaining_ticks <= 0)