summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author AJR <ajrhacker@users.noreply.github.com>2018-03-28 22:40:45 -0400
committer AJR <ajrhacker@users.noreply.github.com>2018-03-28 22:40:45 -0400
commitf88926de9d8cbaef09f1ad26b488e9b42a40d635 (patch)
tree5d662b72d0519656df18ae537ec1df0c548ff947
parent5cf9db8e6c03bd4e88fad36cc8762291b84b0022 (diff)
jollyjgr.cpp, mirax.cpp, pachifev.cpp, ron.cpp, marineb.cpp: MCFG_CPU_VBLANK_INT line callback replacement (nw)
-rw-r--r--src/mame/drivers/jollyjgr.cpp13
-rw-r--r--src/mame/drivers/marineb.cpp31
-rw-r--r--src/mame/drivers/mirax.cpp10
-rw-r--r--src/mame/drivers/pachifev.cpp9
-rw-r--r--src/mame/drivers/ron.cpp12
-rw-r--r--src/mame/includes/marineb.h7
6 files changed, 51 insertions, 31 deletions
diff --git a/src/mame/drivers/jollyjgr.cpp b/src/mame/drivers/jollyjgr.cpp
index c7e81507eb4..956cece4492 100644
--- a/src/mame/drivers/jollyjgr.cpp
+++ b/src/mame/drivers/jollyjgr.cpp
@@ -168,7 +168,7 @@ public:
DECLARE_PALETTE_INIT(jollyjgr);
uint32_t screen_update_jollyjgr(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
uint32_t screen_update_fspider(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
- INTERRUPT_GEN_MEMBER(jollyjgr_interrupt);
+ DECLARE_WRITE_LINE_MEMBER(vblank_irq);
void draw_bitmap( bitmap_rgb32 &bitmap );
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
@@ -226,6 +226,8 @@ WRITE8_MEMBER(jollyjgr_state::jollyjgr_misc_w)
m_bg_tilemap->set_flip((m_flip_x ? TILEMAP_FLIPX : 0) | (m_flip_y ? TILEMAP_FLIPY : 0));
m_nmi_enable = data & 0x80;
+ if (!m_nmi_enable)
+ m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE);
}
WRITE8_MEMBER(jollyjgr_state::jollyjgr_coin_lookout_w)
@@ -651,10 +653,10 @@ GFXDECODE_END
*
*************************************/
-INTERRUPT_GEN_MEMBER(jollyjgr_state::jollyjgr_interrupt)
+WRITE_LINE_MEMBER(jollyjgr_state::vblank_irq)
{
- if(m_nmi_enable)
- device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE);
+ if (state && m_nmi_enable)
+ m_maincpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
}
@@ -670,6 +672,7 @@ void jollyjgr_state::machine_start()
void jollyjgr_state::machine_reset()
{
m_nmi_enable = 0;
+ m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE);
m_flip_x = 0;
m_flip_y = 0;
m_bitmap_disable = 0;
@@ -680,7 +683,6 @@ MACHINE_CONFIG_START(jollyjgr_state::jollyjgr)
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", Z80, XTAL(18'000'000)/6) /* 3MHz verified */
MCFG_CPU_PROGRAM_MAP(jollyjgr_map)
- MCFG_CPU_VBLANK_INT_DRIVER("screen", jollyjgr_state, jollyjgr_interrupt)
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -689,6 +691,7 @@ MACHINE_CONFIG_START(jollyjgr_state::jollyjgr)
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_DRIVER(jollyjgr_state, screen_update_jollyjgr)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(jollyjgr_state, vblank_irq))
MCFG_GFXDECODE_ADD("gfxdecode", "palette", jollyjgr)
MCFG_PALETTE_ADD("palette", 32) // tilemap and sprites
diff --git a/src/mame/drivers/marineb.cpp b/src/mame/drivers/marineb.cpp
index ded73a301e0..f49c32879c8 100644
--- a/src/mame/drivers/marineb.cpp
+++ b/src/mame/drivers/marineb.cpp
@@ -58,11 +58,21 @@ void marineb_state::machine_reset()
void marineb_state::machine_start()
{
+ save_item(NAME(m_irq_mask));
}
WRITE_LINE_MEMBER(marineb_state::irq_mask_w)
{
m_irq_mask = state;
+ if (!m_irq_mask)
+ m_maincpu->set_input_line(0, CLEAR_LINE);
+}
+
+WRITE_LINE_MEMBER(marineb_state::nmi_mask_w)
+{
+ m_irq_mask = state;
+ if (!m_irq_mask)
+ m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE);
}
void marineb_state::marineb_map(address_map &map)
@@ -516,16 +526,16 @@ static GFXDECODE_START( hopprobo )
GFXDECODE_ENTRY( "gfx2", 0x0000, marineb_big_spritelayout, 0, 64 )
GFXDECODE_END
-INTERRUPT_GEN_MEMBER(marineb_state::marineb_vblank_irq)
+WRITE_LINE_MEMBER(marineb_state::marineb_vblank_irq)
{
- if(m_irq_mask)
- device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE);
+ if (state && m_irq_mask)
+ m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
}
-INTERRUPT_GEN_MEMBER(marineb_state::wanted_vblank_irq)
+WRITE_LINE_MEMBER(marineb_state::wanted_vblank_irq)
{
- if(m_irq_mask)
- device.execute().set_input_line(0, HOLD_LINE);
+ if (state && m_irq_mask)
+ m_maincpu->set_input_line(0, HOLD_LINE);
}
@@ -535,10 +545,9 @@ MACHINE_CONFIG_START(marineb_state::marineb)
MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK) /* 3 MHz? */
MCFG_CPU_PROGRAM_MAP(marineb_map)
MCFG_CPU_IO_MAP(marineb_io_map)
- MCFG_CPU_VBLANK_INT_DRIVER("screen", marineb_state, marineb_vblank_irq)
MCFG_DEVICE_ADD("outlatch", LS259, 0)
- MCFG_ADDRESSABLE_LATCH_Q0_OUT_CB(WRITELINE(marineb_state, irq_mask_w))
+ MCFG_ADDRESSABLE_LATCH_Q0_OUT_CB(WRITELINE(marineb_state, nmi_mask_w))
MCFG_ADDRESSABLE_LATCH_Q1_OUT_CB(WRITELINE(marineb_state, flipscreen_y_w))
MCFG_ADDRESSABLE_LATCH_Q2_OUT_CB(WRITELINE(marineb_state, flipscreen_x_w))
@@ -550,6 +559,7 @@ MACHINE_CONFIG_START(marineb_state::marineb)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE_DRIVER(marineb_state, screen_update_marineb)
MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(marineb_state, marineb_vblank_irq))
MCFG_GFXDECODE_ADD("gfxdecode", "palette", marineb)
MCFG_PALETTE_ADD("palette", 256)
@@ -606,12 +616,15 @@ MACHINE_CONFIG_START(marineb_state::wanted)
/* basic machine hardware */
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_IO_MAP(wanted_io_map)
- MCFG_CPU_VBLANK_INT_DRIVER("screen", marineb_state, wanted_vblank_irq)
+
+ MCFG_DEVICE_MODIFY("outlatch")
+ MCFG_ADDRESSABLE_LATCH_Q0_OUT_CB(WRITELINE(marineb_state, irq_mask_w))
/* video hardware */
MCFG_GFXDECODE_MODIFY("gfxdecode", wanted)
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_DRIVER(marineb_state, screen_update_springer)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(marineb_state, wanted_vblank_irq))
// sound hardware (PSG type verified only for bcruzm12)
MCFG_SOUND_REPLACE("ay1", AY8912, SOUND_CLOCK)
diff --git a/src/mame/drivers/mirax.cpp b/src/mame/drivers/mirax.cpp
index 9bf20baf2e3..945a2fd5745 100644
--- a/src/mame/drivers/mirax.cpp
+++ b/src/mame/drivers/mirax.cpp
@@ -158,7 +158,7 @@ public:
void draw_tilemap(bitmap_ind16 &bitmap, const rectangle &cliprect, uint8_t draw_flag);
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
- INTERRUPT_GEN_MEMBER(vblank_irq);
+ DECLARE_WRITE_LINE_MEMBER(vblank_irq);
void mirax(machine_config &config);
void mirax_main_map(address_map &map);
void mirax_sound_map(address_map &map);
@@ -472,16 +472,15 @@ static GFXDECODE_START( mirax )
GFXDECODE_END
-INTERRUPT_GEN_MEMBER(mirax_state::vblank_irq)
+WRITE_LINE_MEMBER(mirax_state::vblank_irq)
{
- if (m_nmi_mask)
- device.execute().set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
+ if (state && m_nmi_mask)
+ m_maincpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
}
MACHINE_CONFIG_START(mirax_state::mirax)
MCFG_CPU_ADD("maincpu", Z80, 12000000/4) // ceramic potted module, encrypted z80
MCFG_CPU_PROGRAM_MAP(mirax_main_map)
- MCFG_CPU_VBLANK_INT_DRIVER("screen", mirax_state, vblank_irq)
MCFG_CPU_ADD("audiocpu", Z80, 12000000/4)
MCFG_CPU_PROGRAM_MAP(mirax_sound_map)
@@ -504,6 +503,7 @@ MACHINE_CONFIG_START(mirax_state::mirax)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
MCFG_SCREEN_UPDATE_DRIVER(mirax_state, screen_update)
MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(mirax_state, vblank_irq))
MCFG_PALETTE_ADD("palette", 0x40)
MCFG_PALETTE_INIT_OWNER(mirax_state, mirax)
diff --git a/src/mame/drivers/pachifev.cpp b/src/mame/drivers/pachifev.cpp
index bba8b18b00a..3bfd1d93389 100644
--- a/src/mame/drivers/pachifev.cpp
+++ b/src/mame/drivers/pachifev.cpp
@@ -111,7 +111,7 @@ public:
DECLARE_READ8_MEMBER(controls_r);
virtual void machine_start() override;
virtual void machine_reset() override;
- INTERRUPT_GEN_MEMBER(pachifev_vblank_irq);
+ DECLARE_WRITE_LINE_MEMBER(vblank_w);
required_device<cpu_device> m_maincpu;
void pachifev(machine_config &config);
void pachifev_cru(address_map &map);
@@ -306,15 +306,16 @@ void pachifev_state::machine_reset()
}
-INTERRUPT_GEN_MEMBER(pachifev_state::pachifev_vblank_irq)
+WRITE_LINE_MEMBER(pachifev_state::vblank_w)
{
+ if (state)
{
static const char *const inname[2] = { "PLUNGER_P1", "PLUNGER_P2" };
/* I wish I had found a better way to handle cocktail inputs, but I can't find a way to access internal RAM */
/* (bit 5 of 0xf0aa : 0 = player 1 and 1 = player 2 - bit 6 of 0xf0aa : 0 = upright and 1 = cocktail). */
/* All I found is that in main RAM, 0xe00f.b determines the player : 0x00 = player 1 and 0x01 = player 2. */
- address_space &ramspace = device.memory().space(AS_PROGRAM);
+ address_space &ramspace = m_maincpu->space(AS_PROGRAM);
uint8_t player = 0;
if ((ramspace.read_byte(0xe00f) == 0x01) && ((ioport("DSW1")->read() & 0x08) == 0x00))
@@ -350,13 +351,13 @@ MACHINE_CONFIG_START(pachifev_state::pachifev)
// CPU TMS9995, standard variant; no line connections
MCFG_TMS99xx_ADD("maincpu", TMS9995, XTAL(12'000'000), pachifev_map, pachifev_cru)
- MCFG_CPU_VBLANK_INT_DRIVER("screen", pachifev_state, pachifev_vblank_irq)
/* video hardware */
MCFG_DEVICE_ADD( "tms9928a", TMS9928A, XTAL(10'738'635) / 2 )
MCFG_TMS9928A_VRAM_SIZE(0x4000)
MCFG_TMS9928A_SCREEN_ADD_NTSC( "screen" )
MCFG_SCREEN_UPDATE_DEVICE( "tms9928a", tms9928a_device, screen_update )
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(pachifev_state, vblank_w))
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/ron.cpp b/src/mame/drivers/ron.cpp
index 082cb239050..36a5512d7f1 100644
--- a/src/mame/drivers/ron.cpp
+++ b/src/mame/drivers/ron.cpp
@@ -53,7 +53,7 @@ public:
// screen updates
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
DECLARE_PALETTE_INIT(ron);
- INTERRUPT_GEN_MEMBER(vblank_irq);
+ DECLARE_WRITE_LINE_MEMBER(vblank_irq);
DECLARE_WRITE8_MEMBER(output_w);
DECLARE_READ8_MEMBER(p1_mux_r);
@@ -143,6 +143,8 @@ uint32_t ron_state::screen_update( screen_device &screen, bitmap_ind16 &bitmap,
WRITE8_MEMBER(ron_state::output_w)
{
m_nmi_enable = (data & 0x10) == 0x10;
+ if (!m_nmi_enable)
+ m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE);
if(data & 0xef)
printf("%02x\n",data);
@@ -427,10 +429,10 @@ PALETTE_INIT_MEMBER(ron_state, ron)
}
-INTERRUPT_GEN_MEMBER( ron_state::vblank_irq )
+WRITE_LINE_MEMBER(ron_state::vblank_irq)
{
- if (m_nmi_enable)
- device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE);
+ if (state && m_nmi_enable)
+ m_maincpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
}
READ8_MEMBER(ron_state::audio_cmd_r)
@@ -487,7 +489,6 @@ MACHINE_CONFIG_START(ron_state::ron)
MCFG_CPU_ADD("maincpu", Z80, MAIN_CLOCK)
MCFG_CPU_PROGRAM_MAP(ron_map)
MCFG_CPU_IO_MAP(ron_io)
- MCFG_CPU_VBLANK_INT_DRIVER("screen", ron_state, vblank_irq)
MCFG_CPU_ADD("audiocpu", I8035, SOUND_CLOCK)
MCFG_CPU_PROGRAM_MAP(ron_audio_map)
@@ -503,6 +504,7 @@ MACHINE_CONFIG_START(ron_state::ron)
MCFG_SCREEN_UPDATE_DRIVER(ron_state, screen_update)
MCFG_SCREEN_RAW_PARAMS(VIDEO_CLOCK, 320, 0, 256, 264, 0, 240)
MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(ron_state, vblank_irq))
MCFG_GFXDECODE_ADD("gfxdecode", "palette", ron)
diff --git a/src/mame/includes/marineb.h b/src/mame/includes/marineb.h
index 369b2ba6468..957c9466a2a 100644
--- a/src/mame/includes/marineb.h
+++ b/src/mame/includes/marineb.h
@@ -31,8 +31,9 @@ public:
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
- uint8_t m_irq_mask;
+ bool m_irq_mask;
DECLARE_WRITE_LINE_MEMBER(irq_mask_w);
+ DECLARE_WRITE_LINE_MEMBER(nmi_mask_w);
DECLARE_WRITE8_MEMBER(marineb_videoram_w);
DECLARE_WRITE8_MEMBER(marineb_colorram_w);
DECLARE_WRITE8_MEMBER(marineb_column_scroll_w);
@@ -50,8 +51,8 @@ public:
uint32_t screen_update_springer(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
uint32_t screen_update_hoccer(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
uint32_t screen_update_hopprobo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- INTERRUPT_GEN_MEMBER(marineb_vblank_irq);
- INTERRUPT_GEN_MEMBER(wanted_vblank_irq);
+ DECLARE_WRITE_LINE_MEMBER(marineb_vblank_irq);
+ DECLARE_WRITE_LINE_MEMBER(wanted_vblank_irq);
void set_tilemap_scrolly( int cols );
void springer(machine_config &config);
void wanted(machine_config &config);