summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/m63.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/m63.c')
-rw-r--r--src/mame/drivers/m63.c25
1 files changed, 22 insertions, 3 deletions
diff --git a/src/mame/drivers/m63.c b/src/mame/drivers/m63.c
index 743b87cf93e..fcda7760651 100644
--- a/src/mame/drivers/m63.c
+++ b/src/mame/drivers/m63.c
@@ -134,6 +134,8 @@ public:
UINT8 * m_scrollram;
size_t m_spriteram_size;
+ UINT8 m_nmi_mask;
+
/* video-related */
tilemap_t *m_bg_tilemap;
tilemap_t *m_fg_tilemap;
@@ -434,6 +436,14 @@ static WRITE8_HANDLER( fghtbskt_samples_w )
sample_start_raw(state->m_samples, 0, state->m_samplebuf + ((data & 0xf0) << 8), 0x2000, 8000, 0);
}
+static WRITE8_HANDLER( nmi_mask_w )
+{
+ m63_state *state = space->machine().driver_data<m63_state>();
+
+ state->m_nmi_mask = data & 1;
+}
+
+
static ADDRESS_MAP_START( m63_map, AS_PROGRAM, 8 )
AM_RANGE(0x0000, 0xbfff) AM_ROM
AM_RANGE(0xd000, 0xdfff) AM_RAM
@@ -443,7 +453,7 @@ static ADDRESS_MAP_START( m63_map, AS_PROGRAM, 8 )
AM_RANGE(0xe400, 0xe7ff) AM_RAM_WRITE(m63_videoram2_w) AM_BASE_MEMBER(m63_state, m_videoram2)
AM_RANGE(0xe800, 0xebff) AM_RAM_WRITE(m63_videoram_w) AM_BASE_MEMBER(m63_state, m_videoram)
AM_RANGE(0xec00, 0xefff) AM_RAM_WRITE(m63_colorram_w) AM_BASE_MEMBER(m63_state, m_colorram)
- AM_RANGE(0xf000, 0xf000) AM_WRITE(interrupt_enable_w) /* NMI enable */
+ AM_RANGE(0xf000, 0xf000) AM_WRITE(nmi_mask_w)
AM_RANGE(0xf002, 0xf002) AM_WRITE(m63_flipscreen_w)
AM_RANGE(0xf003, 0xf003) AM_WRITE(m63_palbank_w)
AM_RANGE(0xf006, 0xf007) AM_WRITE(coin_w)
@@ -472,7 +482,7 @@ static ADDRESS_MAP_START( fghtbskt_map, AS_PROGRAM, 8 )
AM_RANGE(0xf001, 0xf001) AM_WRITENOP
AM_RANGE(0xf002, 0xf002) AM_WRITE(soundlatch_w)
AM_RANGE(0xf800, 0xf800) AM_WRITENOP
- AM_RANGE(0xf801, 0xf801) AM_WRITE(interrupt_enable_w)
+ AM_RANGE(0xf801, 0xf801) AM_WRITE(nmi_mask_w)
AM_RANGE(0xf802, 0xf802) AM_WRITE(fghtbskt_flipscreen_w)
AM_RANGE(0xf803, 0xf803) AM_WRITENOP
AM_RANGE(0xf804, 0xf804) AM_WRITENOP
@@ -734,12 +744,21 @@ static MACHINE_RESET( m63 )
state->m_p2 = 0;
}
+
+static INTERRUPT_GEN( vblank_irq )
+{
+ m63_state *state = device->machine().driver_data<m63_state>();
+
+ if(state->m_nmi_mask)
+ device_set_input_line(device, INPUT_LINE_NMI, PULSE_LINE);
+}
+
static MACHINE_CONFIG_START( m63, m63_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu",Z80,XTAL_12MHz/4) /* 3 MHz */
MCFG_CPU_PROGRAM_MAP(m63_map)
- MCFG_CPU_VBLANK_INT("screen", nmi_line_pulse)
+ MCFG_CPU_VBLANK_INT("screen", vblank_irq)
MCFG_CPU_ADD("soundcpu",I8039,XTAL_12MHz/4) /* ????? */
MCFG_CPU_PROGRAM_MAP(i8039_map)