diff options
Diffstat (limited to 'src/mame/drivers/superqix.c')
-rw-r--r-- | src/mame/drivers/superqix.c | 30 |
1 files changed, 20 insertions, 10 deletions
diff --git a/src/mame/drivers/superqix.c b/src/mame/drivers/superqix.c index d3d68973b84..5809d0e7f08 100644 --- a/src/mame/drivers/superqix.c +++ b/src/mame/drivers/superqix.c @@ -1014,20 +1014,30 @@ static const ay8910_interface bootleg_ay8910_interface_2 = DEVCB_NULL }; +static INTERRUPT_GEN( vblank_irq ) +{ + superqix_state *state = device->machine().driver_data<superqix_state>(); + if(state->m_nmi_mask) + device_set_input_line(device, INPUT_LINE_NMI, PULSE_LINE); +} -static INTERRUPT_GEN( sqix_interrupt ) +static INTERRUPT_GEN( sqix_timer_irq ) { + superqix_state *state = device->machine().driver_data<superqix_state>(); + /* highly suspicious... */ - if (cpu_getiloops(device) <= 3) - nmi_line_assert(device); + if (cpu_getiloops(device) <= 3 && state->m_nmi_mask) + device_set_input_line(device, INPUT_LINE_NMI, ASSERT_LINE); } -static INTERRUPT_GEN( bootleg_interrupt ) +static INTERRUPT_GEN( sqixbl_timer_irq ) { + superqix_state *state = device->machine().driver_data<superqix_state>(); + /* highly suspicious... */ - if (cpu_getiloops(device) <= 3) - nmi_line_pulse(device); + if (cpu_getiloops(device) <= 3 && state->m_nmi_mask) + device_set_input_line(device, INPUT_LINE_NMI, PULSE_LINE); } @@ -1036,7 +1046,7 @@ static MACHINE_CONFIG_START( pbillian, superqix_state ) MCFG_CPU_ADD("maincpu", Z80,12000000/2) /* 6 MHz */ MCFG_CPU_PROGRAM_MAP(main_map) MCFG_CPU_IO_MAP(pbillian_port_map) - MCFG_CPU_VBLANK_INT("screen", nmi_line_pulse) + MCFG_CPU_VBLANK_INT("screen", vblank_irq) MCFG_MACHINE_START(pbillian) @@ -1069,7 +1079,7 @@ static MACHINE_CONFIG_START( hotsmash, superqix_state ) MCFG_CPU_ADD("maincpu", Z80,12000000/2) /* 6 MHz */ MCFG_CPU_PROGRAM_MAP(main_map) MCFG_CPU_IO_MAP(hotsmash_port_map) - MCFG_CPU_VBLANK_INT("screen", nmi_line_pulse) + MCFG_CPU_VBLANK_INT("screen", vblank_irq) MCFG_CPU_ADD("mcu", M68705, 4000000) /* ???? */ MCFG_CPU_PROGRAM_MAP(m68705_map) @@ -1107,7 +1117,7 @@ static MACHINE_CONFIG_START( sqix, superqix_state ) MCFG_CPU_ADD("maincpu", Z80, 12000000/2) /* 6 MHz */ MCFG_CPU_PROGRAM_MAP(main_map) MCFG_CPU_IO_MAP(sqix_port_map) - MCFG_CPU_VBLANK_INT_HACK(sqix_interrupt,6) /* ??? */ + MCFG_CPU_VBLANK_INT_HACK(sqix_timer_irq,6) /* ??? */ MCFG_CPU_ADD("mcu", I8751, 12000000/3) /* ??? */ MCFG_CPU_IO_MAP(bootleg_mcu_io_map) @@ -1156,7 +1166,7 @@ static MACHINE_CONFIG_START( sqixbl, superqix_state ) MCFG_CPU_ADD("maincpu", Z80, 12000000/2) /* 6 MHz */ MCFG_CPU_PROGRAM_MAP(main_map) MCFG_CPU_IO_MAP(bootleg_port_map) - MCFG_CPU_VBLANK_INT_HACK(bootleg_interrupt,6) /* ??? */ + MCFG_CPU_VBLANK_INT_HACK(sqixbl_timer_irq,6) /* ??? */ MCFG_MACHINE_START(superqix) |