mirror of
https://github.com/ekeeke/Genesis-Plus-GX.git
synced 2024-12-27 03:31:49 +01:00
[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:
parent
400fd5be16
commit
14d4074f11
@ -740,6 +740,9 @@ 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;
|
||||||
@ -1026,6 +1029,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);
|
||||||
return;
|
return;
|
||||||
|
Loading…
Reference in New Issue
Block a user