summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author AJR <ajrhacker@users.noreply.github.com>2018-03-28 14:52:57 -0400
committer AJR <ajrhacker@users.noreply.github.com>2018-03-28 14:52:57 -0400
commit3a0f55c31d78e2ddc3ca194d48ceaa8b6cfb0e6c (patch)
tree274a6f2cf134ce0d5e4f591be01da55d32ade400
parent052eb8f073997307bcac2ee79b863b3309370d6a (diff)
mappy.cpp: Use MCFG_SCREEN_VBLANK_CALLBACK instead of MCFG_CPU_VBLANK_INT (nw)
-rw-r--r--src/mame/drivers/mappy.cpp23
-rw-r--r--src/mame/includes/mappy.h4
2 files changed, 9 insertions, 18 deletions
diff --git a/src/mame/drivers/mappy.cpp b/src/mame/drivers/mappy.cpp
index 690b6d3c679..3128cc35005 100644
--- a/src/mame/drivers/mappy.cpp
+++ b/src/mame/drivers/mappy.cpp
@@ -621,8 +621,11 @@ void mappy_state::device_timer(emu_timer &timer, device_timer_id id, int param,
}
}
-INTERRUPT_GEN_MEMBER(mappy_state::main_vblank_irq)
+WRITE_LINE_MEMBER(mappy_state::vblank_irq)
{
+ if (!state)
+ return;
+
if (m_main_irq_mask)
m_maincpu->set_input_line(0, ASSERT_LINE);
@@ -631,17 +634,11 @@ INTERRUPT_GEN_MEMBER(mappy_state::main_vblank_irq)
if (!m_namcoio[1]->read_reset_line()) // give the cpu a tiny bit of time to write the command before processing it
timer_set(attotime::from_usec(50), TIMER_IO_RUN, 1);
-}
-INTERRUPT_GEN_MEMBER(mappy_state::sub_vblank_irq)
-{
if (m_sub_irq_mask)
m_subcpu->set_input_line(0, ASSERT_LINE);
-}
-INTERRUPT_GEN_MEMBER(mappy_state::sub2_vblank_irq)
-{
- if (m_sub2_irq_mask)
+ if (m_subcpu2.found() && m_sub2_irq_mask)
m_subcpu2->set_input_line(0, ASSERT_LINE);
}
@@ -1324,11 +1321,9 @@ MACHINE_CONFIG_START(mappy_state::superpac_common)
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", MC6809E, PIXEL_CLOCK/4) /* 1.536 MHz */
MCFG_CPU_PROGRAM_MAP(superpac_cpu1_map)
- MCFG_CPU_VBLANK_INT_DRIVER("screen", mappy_state, main_vblank_irq) // also update the custom I/O chips
MCFG_CPU_ADD("sub", MC6809E, PIXEL_CLOCK/4) /* 1.536 MHz */
MCFG_CPU_PROGRAM_MAP(superpac_cpu2_map)
- MCFG_CPU_VBLANK_INT_DRIVER("screen", mappy_state, sub_vblank_irq)
MCFG_DEVICE_ADD("mainlatch", LS259, 0) // 2M on CPU board
MCFG_ADDRESSABLE_LATCH_Q0_OUT_CB(WRITELINE(mappy_state, int_on_2_w))
@@ -1357,6 +1352,7 @@ MACHINE_CONFIG_START(mappy_state::superpac_common)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
MCFG_SCREEN_UPDATE_DRIVER(mappy_state, screen_update_superpac)
MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(mappy_state, vblank_irq)) // cause IRQs on both CPUs; also update the custom I/O chips
MCFG_VIDEO_START_OVERRIDE(mappy_state,superpac)
@@ -1436,15 +1432,12 @@ MACHINE_CONFIG_START(mappy_state::phozon)
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", MC6809E, PIXEL_CLOCK/4) /* MAIN CPU */
MCFG_CPU_PROGRAM_MAP(phozon_cpu1_map)
- MCFG_CPU_VBLANK_INT_DRIVER("screen", mappy_state, main_vblank_irq) // also update the custom I/O chips
MCFG_CPU_ADD("sub", MC6809E, PIXEL_CLOCK/4) /* SOUND CPU */
MCFG_CPU_PROGRAM_MAP(phozon_cpu2_map)
- MCFG_CPU_VBLANK_INT_DRIVER("screen", mappy_state, sub_vblank_irq)
MCFG_CPU_ADD("sub2", MC6809E, PIXEL_CLOCK/4) /* SUB CPU */
MCFG_CPU_PROGRAM_MAP(phozon_cpu3_map)
- MCFG_CPU_VBLANK_INT_DRIVER("screen", mappy_state, sub2_vblank_irq)
MCFG_DEVICE_ADD("mainlatch", LS259, 0) // 5C
MCFG_ADDRESSABLE_LATCH_Q0_OUT_CB(WRITELINE(mappy_state, int_on_2_w))
@@ -1487,6 +1480,7 @@ MACHINE_CONFIG_START(mappy_state::phozon)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
MCFG_SCREEN_UPDATE_DRIVER(mappy_state, screen_update_phozon)
MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(mappy_state, vblank_irq)) // cause IRQs on all three CPUs; also update the custom I/O chips
MCFG_VIDEO_START_OVERRIDE(mappy_state,phozon)
@@ -1504,11 +1498,9 @@ MACHINE_CONFIG_START(mappy_state::mappy_common)
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", MC6809E, PIXEL_CLOCK/4) /* 1.536 MHz */
MCFG_CPU_PROGRAM_MAP(mappy_cpu1_map)
- MCFG_CPU_VBLANK_INT_DRIVER("screen", mappy_state, main_vblank_irq) // also update the custom I/O chips
MCFG_CPU_ADD("sub", MC6809E, PIXEL_CLOCK/4) /* 1.536 MHz */
MCFG_CPU_PROGRAM_MAP(mappy_cpu2_map)
- MCFG_CPU_VBLANK_INT_DRIVER("screen", mappy_state, sub_vblank_irq)
MCFG_DEVICE_ADD("mainlatch", LS259, 0) // 2M on CPU board
MCFG_ADDRESSABLE_LATCH_Q0_OUT_CB(WRITELINE(mappy_state, int_on_2_w))
@@ -1538,6 +1530,7 @@ MACHINE_CONFIG_START(mappy_state::mappy_common)
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
MCFG_SCREEN_UPDATE_DRIVER(mappy_state, screen_update_mappy)
MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(mappy_state, vblank_irq)) // cause IRQs on both CPUs; also update the custom I/O chips
MCFG_VIDEO_START_OVERRIDE(mappy_state,mappy)
diff --git a/src/mame/includes/mappy.h b/src/mame/includes/mappy.h
index 7e5dcb1e52a..73502e33da8 100644
--- a/src/mame/includes/mappy.h
+++ b/src/mame/includes/mappy.h
@@ -74,9 +74,7 @@ public:
uint32_t screen_update_superpac(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
uint32_t screen_update_phozon(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
uint32_t screen_update_mappy(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- INTERRUPT_GEN_MEMBER(main_vblank_irq);
- INTERRUPT_GEN_MEMBER(sub_vblank_irq);
- INTERRUPT_GEN_MEMBER(sub2_vblank_irq);
+ DECLARE_WRITE_LINE_MEMBER(vblank_irq);
DECLARE_DRIVER_INIT(grobda);
DECLARE_DRIVER_INIT(digdug2);
void mappy_draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, uint8_t *spriteram_base);