summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/megazone.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/megazone.c')
-rw-r--r--src/mame/drivers/megazone.c19
1 files changed, 17 insertions, 2 deletions
diff --git a/src/mame/drivers/megazone.c b/src/mame/drivers/megazone.c
index 61f441cb7f2..6c2161d3549 100644
--- a/src/mame/drivers/megazone.c
+++ b/src/mame/drivers/megazone.c
@@ -76,12 +76,18 @@ static WRITE8_HANDLER( megazone_coin_counter_w )
coin_counter_w(space->machine(), 1 - offset, data); /* 1-offset, because coin counters are in reversed order */
}
+static WRITE8_HANDLER( irq_mask_w )
+{
+ megazone_state *state = space->machine().driver_data<megazone_state>();
+
+ state->m_irq_mask = data & 1;
+}
static ADDRESS_MAP_START( megazone_map, AS_PROGRAM, 8 )
AM_RANGE(0x0000, 0x0001) AM_WRITE(megazone_coin_counter_w) /* coin counter 2, coin counter 1 */
AM_RANGE(0x0005, 0x0005) AM_WRITE(megazone_flipscreen_w)
- AM_RANGE(0x0007, 0x0007) AM_WRITE(interrupt_enable_w)
+ AM_RANGE(0x0007, 0x0007) AM_WRITE(irq_mask_w)
AM_RANGE(0x0800, 0x0800) AM_WRITE(watchdog_reset_w)
AM_RANGE(0x1000, 0x1000) AM_WRITEONLY AM_BASE_MEMBER(megazone_state, m_scrolly)
AM_RANGE(0x1800, 0x1800) AM_WRITEONLY AM_BASE_MEMBER(megazone_state, m_scrollx)
@@ -244,12 +250,21 @@ static MACHINE_RESET( megazone )
state->m_i8039_status = 0;
}
+static INTERRUPT_GEN( vblank_irq )
+{
+ megazone_state *state = device->machine().driver_data<megazone_state>();
+
+ if(state->m_irq_mask)
+ device_set_input_line(device, 0, HOLD_LINE);
+}
+
+
static MACHINE_CONFIG_START( megazone, megazone_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", M6809, 18432000/9) /* 2 MHz */
MCFG_CPU_PROGRAM_MAP(megazone_map)
- MCFG_CPU_VBLANK_INT("screen", irq0_line_hold)
+ MCFG_CPU_VBLANK_INT("screen", vblank_irq)
MCFG_CPU_ADD("audiocpu", Z80,18432000/6) /* Z80 Clock is derived from the H1 signal */
MCFG_CPU_PROGRAM_MAP(megazone_sound_map)