diff --git a/src/fds.cpp b/src/fds.cpp index 3fc4ee92..35924a4a 100644 --- a/src/fds.cpp +++ b/src/fds.cpp @@ -223,16 +223,18 @@ void FCEU_FDSSelect(void) FCEU_DispMessage("Disk %d Side %c Selected", 0, SelectDisk >> 1, (SelectDisk & 1) ? 'B' : 'A'); } +#define IRQ_Repeat (IRQa & 0x01) +#define IRQ_Enabled (IRQa & 0x02) + static void FDSFix(int a) { - if ((IRQa & 2) && IRQCount) { + if ((IRQa & IRQ_Enabled) && IRQCount) { IRQCount -= a; if (IRQCount <= 0) { - if (!(IRQa & 1)) { - IRQa &= ~2; - IRQCount = IRQLatch = 0; - } else - IRQCount = IRQLatch; + IRQCount = IRQLatch; X6502_IRQBegin(FCEU_IQEXT); + if (!(IRQa & IRQ_Repeat)) { + IRQa &= ~IRQ_Enabled; + } } } if (DiskSeekIRQ > 0) {