fix FME-7 IRQ ACK logic in quicknes and neshawk

This commit is contained in:
zeromus 2015-03-05 18:36:09 +00:00
parent 3589323ca1
commit aaa5704107
3 changed files with 7 additions and 5 deletions

View File

@ -179,8 +179,12 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
irq_countdown = value.Bit(7); irq_countdown = value.Bit(7);
irq_enabled = value.Bit(0); irq_enabled = value.Bit(0);
//if (value != 0) NES.LogLine("irq set to {0},{1} with value {2:x2}", irq_countdown, irq_enabled, value); //if (value != 0) NES.LogLine("irq set to {0},{1} with value {2:x2}", irq_countdown, irq_enabled, value);
if (!irq_enabled) irq_asserted = false;
//always ACK for reg 0xD and no other reg
//http://forums.nesdev.com/viewtopic.php?f=2&t=12436&start=15
irq_asserted = false;
SyncIrq(); SyncIrq();
break; break;
case 0xE: case 0xE:
irq_counter &= 0xFF00; irq_counter &= 0xFF00;

Binary file not shown.

View File

@ -160,8 +160,8 @@ void Mapper_Fme7::write_irq( nes_time_t time, int index, int data )
{ {
case 0x0D: case 0x0D:
irq_mode = data; irq_mode = data;
if ( (irq_mode & 0x81) != 0x81 )
irq_pending = false; irq_pending = false;
irq_changed();
break; break;
case 0x0E: case 0x0E:
@ -173,8 +173,6 @@ void Mapper_Fme7::write_irq( nes_time_t time, int index, int data )
break; break;
} }
if ( (irq_mode & 0x81) == 0x81 )
irq_changed();
} }
void Mapper_Fme7::write_register( int index, int data ) void Mapper_Fme7::write_register( int index, int data )