PCE: Fixed timer IRQ regression that caused a freeze in After Burner 2

This commit is contained in:
Sour 2023-12-22 14:19:42 +09:00
parent 9258d1453f
commit 7298c236c5
2 changed files with 1 additions and 3 deletions

View file

@ -274,7 +274,6 @@ void PceCpu::ProcessCpuCycle()
_memoryManager->Exec();
_pendingIrqs = CheckFlag(PceCpuFlags::Interrupt) ? 0 : _memoryManager->GetPendingIrqs();
_prevInterruptFlag = CheckFlag(PceCpuFlags::Interrupt);
}
#ifndef DUMMYCPU
@ -388,7 +387,7 @@ void PceCpu::ProcessIrq(bool forBrk)
uint16_t vector;
if(forBrk) {
vector = PceCpu::Irq2Vector;
} else if(!_prevInterruptFlag && _memoryManager->HasIrqSource(PceIrqSource::TimerIrq)) {
} else if((_pendingIrqs & (uint8_t)PceIrqSource::TimerIrq) && _memoryManager->HasIrqSource(PceIrqSource::TimerIrq)) {
//Timer IRQ appears to behave differently from the VDC IRQ2
//When a timer IRQ is pending and the following sequence runs:
// CLI ;enable interrupts

View file

@ -40,7 +40,6 @@ private:
bool _memoryFlag = false;
uint8_t _pendingIrqs = 0;
bool _prevInterruptFlag = false;
PceAddrMode _instAddrMode;
private: