FDS: Improve IRQ emulation (#469)

Fix https://github.com/TASEmulators/fceux/issues/468

Co-authored-by: negative <negativeExponent@users.noreply.github.com>
This commit is contained in:
negativeExponent 2022-03-06 09:39:17 -08:00 committed by GitHub
parent aaa66388de
commit 3bd6da8e83
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
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) {