[Core/MCD] fixed pending level 1 interrupts when GFX interrupt is disabled (fixes random freezes out of "Batman Returns" option menu)

This commit is contained in:
EkeEke 2013-10-21 00:19:23 +02:00 committed by twinaphex
parent f7fc3382fc
commit 754d2a1168

View File

@ -739,7 +739,10 @@ static void scd_write_byte(unsigned int address, unsigned int data)
/* update IEN2 flag */ /* update IEN2 flag */
scd.regs[0x00].byte.h = (scd.regs[0x00].byte.h & 0x7f) | ((data & 0x04) << 5); scd.regs[0x00].byte.h = (scd.regs[0x00].byte.h & 0x7f) | ((data & 0x04) << 5);
/* clear level 1 interrupt if disabled ("Batman Returns" option menu) */
scd.pending &= ~(data & 0x02);
/* update IRQ level */ /* update IRQ level */
s68k_update_irq((scd.pending & data) >> 1); s68k_update_irq((scd.pending & data) >> 1);
return; return;
@ -1025,6 +1028,9 @@ static void scd_write_word(unsigned int address, unsigned int data)
/* update IEN2 flag */ /* update IEN2 flag */
scd.regs[0x00].byte.h = (scd.regs[0x00].byte.h & 0x7f) | ((data & 0x04) << 5); scd.regs[0x00].byte.h = (scd.regs[0x00].byte.h & 0x7f) | ((data & 0x04) << 5);
/* clear pending level 1 interrupt if disabled ("Batman Returns" option menu) */
scd.pending &= ~(data & 0x02);
/* update IRQ level */ /* update IRQ level */
s68k_update_irq((scd.pending & data) >> 1); s68k_update_irq((scd.pending & data) >> 1);