CPU: Make interrupts actually edge-triggered

This commit is contained in:
Stenzek
2024-03-16 23:28:53 +10:00
parent 3702a533f2
commit fa6850902a
13 changed files with 145 additions and 98 deletions

View File

@ -929,9 +929,14 @@ void SPU::WriteRegister(u32 offset, u16 value)
s_SPUSTAT.mode = s_SPUCNT.mode.GetValue();
if (!s_SPUCNT.irq9_enable)
{
s_SPUSTAT.irq9_flag = false;
InterruptController::SetLineState(InterruptController::IRQ::SPU, false);
}
else if (IsRAMIRQTriggerable())
{
CheckForLateRAMIRQs();
}
UpdateEventInterval();
UpdateDMARequest();
@ -1155,7 +1160,7 @@ void SPU::TriggerRAMIRQ()
{
DebugAssert(IsRAMIRQTriggerable());
s_SPUSTAT.irq9_flag = true;
InterruptController::InterruptRequest(InterruptController::IRQ::SPU);
InterruptController::SetLineState(InterruptController::IRQ::SPU, true);
}
void SPU::CheckForLateRAMIRQs()