FDS: Improve IRQ emulation

Fix https://github.com/TASEmulators/fceux/issues/468
This commit is contained in:
negative 2022-03-06 08:48:02 +08:00
parent 8ad5767a3b
commit 97d4c052d0
1 changed files with 8 additions and 6 deletions

View File

@ -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) {