From 8e072f5553064cb7726e938dae3078dfc2293975 Mon Sep 17 00:00:00 2001 From: AJR Date: Sat, 14 Apr 2018 12:43:04 -0400 Subject: (numerous drivers): Convert MCFG_CPU_VBLANK_INT to MCFG_SCREEN_VBLANK_CALLBACK (nw) --- src/mame/drivers/alinvade.cpp | 8 +-- src/mame/drivers/cntsteer.cpp | 12 ++-- src/mame/drivers/commando.cpp | 7 ++- src/mame/drivers/corona.cpp | 10 ++-- src/mame/drivers/dec8.cpp | 6 +- src/mame/drivers/divebomb.cpp | 6 +- src/mame/drivers/fantland.cpp | 14 ++--- src/mame/drivers/gkigt.cpp | 8 +-- src/mame/drivers/goldstar.cpp | 57 ++++++++++--------- src/mame/drivers/hotblock.cpp | 7 +-- src/mame/drivers/hp16500.cpp | 12 +--- src/mame/drivers/igs009.cpp | 10 ++-- src/mame/drivers/igs_fear.cpp | 2 - src/mame/drivers/igs_m027.cpp | 17 +++--- src/mame/drivers/jokrwild.cpp | 2 +- src/mame/drivers/mac.cpp | 16 +++--- src/mame/drivers/mastboy.cpp | 13 ++--- src/mame/drivers/maygayv1.cpp | 12 +--- src/mame/drivers/meadows.cpp | 26 +++++---- src/mame/drivers/mermaid.cpp | 5 -- src/mame/drivers/metro.cpp | 128 +++++++++++++++++++++++++++++------------- src/mame/drivers/pcktgal.cpp | 2 +- src/mame/drivers/pipeline.cpp | 2 +- src/mame/drivers/pokechmp.cpp | 11 +++- src/mame/drivers/punchout.cpp | 12 ++-- src/mame/drivers/rastersp.cpp | 9 +-- src/mame/drivers/realbrk.cpp | 7 ++- src/mame/drivers/roul.cpp | 2 +- src/mame/drivers/sidepckt.cpp | 2 +- src/mame/drivers/stuntair.cpp | 8 +-- src/mame/drivers/sub.cpp | 8 +-- src/mame/drivers/tsamurai.cpp | 13 +++-- src/mame/drivers/tubep.cpp | 4 +- src/mame/includes/commando.h | 2 +- src/mame/includes/fantland.h | 2 +- src/mame/includes/goldstar.h | 4 +- src/mame/includes/mac.h | 2 +- src/mame/includes/meadows.h | 4 +- src/mame/includes/mermaid.h | 1 - src/mame/includes/metro.h | 6 +- src/mame/includes/pokechmp.h | 1 + src/mame/includes/punchout.h | 4 +- src/mame/includes/realbrk.h | 2 +- src/mame/includes/tsamurai.h | 2 +- 44 files changed, 269 insertions(+), 219 deletions(-) diff --git a/src/mame/drivers/alinvade.cpp b/src/mame/drivers/alinvade.cpp index bc08e181329..5c517117f09 100644 --- a/src/mame/drivers/alinvade.cpp +++ b/src/mame/drivers/alinvade.cpp @@ -42,7 +42,7 @@ public: DECLARE_WRITE8_MEMBER(irqmask_w); DECLARE_WRITE8_MEMBER(sound_w); DECLARE_WRITE8_MEMBER(sounden_w); - INTERRUPT_GEN_MEMBER(vblank_irq); + DECLARE_WRITE_LINE_MEMBER(vblank_irq); uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); void alinvade(machine_config &config); @@ -199,9 +199,9 @@ uint32_t alinvade_state::screen_update(screen_device &screen, bitmap_rgb32 &bitm return 0; } -INTERRUPT_GEN_MEMBER(alinvade_state::vblank_irq) +WRITE_LINE_MEMBER(alinvade_state::vblank_irq) { - if(m_irqmask & 1) + if (state && BIT(m_irqmask, 0)) m_maincpu->set_input_line(0,HOLD_LINE); } @@ -210,7 +210,6 @@ MACHINE_CONFIG_START(alinvade_state::alinvade) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502,2000000) /* ? MHz */ MCFG_CPU_PROGRAM_MAP(alinvade_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", alinvade_state, vblank_irq) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) @@ -219,6 +218,7 @@ MACHINE_CONFIG_START(alinvade_state::alinvade) MCFG_SCREEN_SIZE(128, 128) MCFG_SCREEN_VISIBLE_AREA(0, 128-1, 0, 128-1) MCFG_SCREEN_UPDATE_DRIVER(alinvade_state, screen_update) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(alinvade_state, vblank_irq)) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") diff --git a/src/mame/drivers/cntsteer.cpp b/src/mame/drivers/cntsteer.cpp index edc00d845e3..70dff7fd6ea 100644 --- a/src/mame/drivers/cntsteer.cpp +++ b/src/mame/drivers/cntsteer.cpp @@ -115,7 +115,7 @@ public: DECLARE_PALETTE_INIT(zerotrgt); uint32_t screen_update_cntsteer(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_zerotrgt(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - INTERRUPT_GEN_MEMBER(subcpu_vblank_irq); + DECLARE_WRITE_LINE_MEMBER(subcpu_vblank_irq); INTERRUPT_GEN_MEMBER(sound_interrupt); void zerotrgt_draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect ); void cntsteer_draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect ); @@ -639,7 +639,7 @@ WRITE8_MEMBER(cntsteer_state::nmimask_w) m_nmimask = data & 0x80; } -INTERRUPT_GEN_MEMBER(cntsteer_state::subcpu_vblank_irq) +WRITE_LINE_MEMBER(cntsteer_state::subcpu_vblank_irq) { // TODO: hack for bus request: DP is enabled with 0xff only during POST, and disabled once that critical operations are performed. // That's my best guess so far about how Slave is supposed to stop execution on Master CPU, the lack of any realistic write @@ -647,7 +647,9 @@ INTERRUPT_GEN_MEMBER(cntsteer_state::subcpu_vblank_irq) // Game currently returns error on MIX CPU RAM because halt-ing BACK CPU doesn't happen when it should of course ... // uint8_t dp_r = (uint8_t)m_subcpu->state_int(M6809_DP); // m_maincpu->set_input_line(INPUT_LINE_HALT, dp_r ? ASSERT_LINE : CLEAR_LINE); - m_subcpu->set_input_line(M6809_IRQ_LINE, ASSERT_LINE); + + if (state) + m_subcpu->set_input_line(M6809_IRQ_LINE, ASSERT_LINE); } INTERRUPT_GEN_MEMBER(cntsteer_state::sound_interrupt) @@ -921,12 +923,10 @@ MACHINE_CONFIG_START(cntsteer_state::cntsteer) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", MC6809E, 2000000) /* MC68B09E */ MCFG_CPU_PROGRAM_MAP(cntsteer_cpu1_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", cntsteer_state, nmi_line_pulse) /* ? */ MCFG_CPU_ADD("subcpu", MC6809E, 2000000) /* MC68B09E */ MCFG_CPU_PROGRAM_MAP(cntsteer_cpu2_map) // MCFG_DEVICE_DISABLE() - MCFG_CPU_VBLANK_INT_DRIVER("screen", cntsteer_state, subcpu_vblank_irq) /* ? */ MCFG_CPU_ADD("audiocpu", M6502, 1500000) /* ? */ MCFG_CPU_PROGRAM_MAP(sound_map) @@ -943,6 +943,8 @@ MACHINE_CONFIG_START(cntsteer_state::cntsteer) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1) MCFG_SCREEN_UPDATE_DRIVER(cntsteer_state, screen_update_cntsteer) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI)) // ? + MCFG_DEVCB_CHAIN_OUTPUT(WRITELINE(cntsteer_state, subcpu_vblank_irq)) // ? MCFG_QUANTUM_PERFECT_CPU("maincpu") MCFG_QUANTUM_PERFECT_CPU("subcpu") diff --git a/src/mame/drivers/commando.cpp b/src/mame/drivers/commando.cpp index b8c957eec2a..e421eae97cf 100644 --- a/src/mame/drivers/commando.cpp +++ b/src/mame/drivers/commando.cpp @@ -229,9 +229,10 @@ GFXDECODE_END /* Interrupt Generator */ -INTERRUPT_GEN_MEMBER(commando_state::commando_interrupt) +WRITE_LINE_MEMBER(commando_state::vblank_irq) { - device.execute().set_input_line_and_vector(0, HOLD_LINE, 0xd7); // RST 10h - VBLANK + if (state) + m_maincpu->set_input_line_and_vector(0, HOLD_LINE, 0xd7); // RST 10h - VBLANK } /* Machine Driver */ @@ -257,7 +258,6 @@ MACHINE_CONFIG_START(commando_state::commando) MCFG_CPU_ADD("maincpu", Z80, PHI_MAIN) // ??? MCFG_CPU_PROGRAM_MAP(commando_map) MCFG_CPU_OPCODES_MAP(decrypted_opcodes_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", commando_state, commando_interrupt) MCFG_CPU_ADD("audiocpu", Z80, PHI_B) // 3 MHz MCFG_CPU_PROGRAM_MAP(sound_map) @@ -272,6 +272,7 @@ MACHINE_CONFIG_START(commando_state::commando) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(commando_state, screen_update_commando) MCFG_SCREEN_VBLANK_CALLBACK(DEVWRITELINE("spriteram", buffered_spriteram8_device, vblank_copy_rising)) + MCFG_DEVCB_CHAIN_OUTPUT(WRITELINE(commando_state, vblank_irq)) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", commando) diff --git a/src/mame/drivers/corona.cpp b/src/mame/drivers/corona.cpp index 6bcfc71b49b..19646dd7722 100644 --- a/src/mame/drivers/corona.cpp +++ b/src/mame/drivers/corona.cpp @@ -1385,7 +1385,6 @@ MACHINE_CONFIG_START(corona_state::winner81) MCFG_CPU_ADD("maincpu", Z80, WC81_MAIN_XTAL/8) /* measured */ MCFG_CPU_PROGRAM_MAP(winner81_map) MCFG_CPU_IO_MAP(winner81_cpu_io_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", corona_state, nmi_line_pulse) MCFG_CPU_ADD("soundcpu", Z80, WC81_MAIN_XTAL/10) /* measured */ MCFG_CPU_PROGRAM_MAP(winner81_sound_map) @@ -1402,6 +1401,7 @@ MACHINE_CONFIG_START(corona_state::winner81) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1) MCFG_SCREEN_UPDATE_DRIVER(corona_state, screen_update_winner) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI)) MCFG_PALETTE_ADD("palette", 0x100) MCFG_PALETTE_INIT_OWNER(corona_state, corona) @@ -1420,7 +1420,6 @@ MACHINE_CONFIG_START(corona_state::winner82) MCFG_CPU_ADD("maincpu", Z80, WC82_MAIN_XTAL/8) /* measured */ MCFG_CPU_PROGRAM_MAP(winner82_map) MCFG_CPU_IO_MAP(winner82_cpu_io_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", corona_state, nmi_line_pulse) MCFG_CPU_ADD("soundcpu", Z80, WC82_MAIN_XTAL/8) /* measured */ MCFG_CPU_PROGRAM_MAP(winner82_sound_map) /* IM1 instead of NMI */ @@ -1436,6 +1435,7 @@ MACHINE_CONFIG_START(corona_state::winner82) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1) MCFG_SCREEN_UPDATE_DRIVER(corona_state, screen_update_winner) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI)) MCFG_PALETTE_ADD("palette", 0x100) MCFG_PALETTE_INIT_OWNER(corona_state, corona) @@ -1454,7 +1454,6 @@ MACHINE_CONFIG_START(corona_state::re800) MCFG_CPU_ADD("maincpu", Z80, RE_MAIN_XTAL/8) /* measured 2MHz */ MCFG_CPU_PROGRAM_MAP(re800_map) MCFG_CPU_IO_MAP(re800_cpu_io_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", corona_state, nmi_line_pulse) MCFG_CPU_ADD("soundcpu", Z80, RE_MAIN_XTAL/8) /* measured 2MHz */ MCFG_CPU_PROGRAM_MAP(re800_sound_map) @@ -1471,6 +1470,7 @@ MACHINE_CONFIG_START(corona_state::re800) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 32*8-1) MCFG_SCREEN_UPDATE_DRIVER(corona_state, screen_update_winner) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI)) MCFG_PALETTE_ADD("palette", 0x100) MCFG_PALETTE_INIT_OWNER(corona_state, corona) @@ -1489,7 +1489,6 @@ MACHINE_CONFIG_START(corona_state::rcirulet) MCFG_CPU_ADD("maincpu", Z80, RE_MAIN_XTAL/8) /* measured 2MHz */ MCFG_CPU_PROGRAM_MAP(re800_map) MCFG_CPU_IO_MAP(re800_cpu_io_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", corona_state, nmi_line_pulse) MCFG_CPU_ADD("soundcpu", Z80, RE_MAIN_XTAL/8) /* measured 2MHz */ MCFG_CPU_PROGRAM_MAP(winner82_sound_map) /* IM1 instead of NMI */ @@ -1505,6 +1504,7 @@ MACHINE_CONFIG_START(corona_state::rcirulet) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 32*8-1) MCFG_SCREEN_UPDATE_DRIVER(corona_state, screen_update_winner) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI)) MCFG_PALETTE_ADD("palette", 0x100) MCFG_PALETTE_INIT_OWNER(corona_state, corona) @@ -1523,7 +1523,6 @@ MACHINE_CONFIG_START(corona_state::luckyrlt) MCFG_CPU_ADD("maincpu", Z80, RE_MAIN_XTAL/8) /* measured 2MHz */ MCFG_CPU_PROGRAM_MAP(luckyrlt_map) MCFG_CPU_IO_MAP(luckyrlt_cpu_io_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", corona_state, nmi_line_pulse) MCFG_CPU_ADD("soundcpu", Z80, RE_MAIN_XTAL/8) /* measured 2MHz */ MCFG_CPU_PROGRAM_MAP(luckyrlt_sound_map) @@ -1540,6 +1539,7 @@ MACHINE_CONFIG_START(corona_state::luckyrlt) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(corona_state, screen_update_luckyrlt) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI)) MCFG_PALETTE_ADD("palette", 0x100) MCFG_PALETTE_INIT_OWNER(corona_state, corona) diff --git a/src/mame/drivers/dec8.cpp b/src/mame/drivers/dec8.cpp index bc9d711032c..178e5e7b849 100644 --- a/src/mame/drivers/dec8.cpp +++ b/src/mame/drivers/dec8.cpp @@ -2249,7 +2249,6 @@ MACHINE_CONFIG_START(dec8_state::csilver) MCFG_CPU_ADD("sub", MC6809E, XTAL(12'000'000)/8) /* verified on pcb */ MCFG_CPU_PROGRAM_MAP(csilver_sub_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", dec8_state, nmi_line_pulse) MCFG_CPU_ADD("audiocpu", M6502, XTAL(12'000'000)/8) /* verified on pcb */ MCFG_CPU_PROGRAM_MAP(csilver_s_map) @@ -2272,6 +2271,7 @@ MACHINE_CONFIG_START(dec8_state::csilver) MCFG_SCREEN_RAW_PARAMS_DATA_EAST MCFG_SCREEN_UPDATE_DRIVER(dec8_state, screen_update_lastmisn) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("sub", INPUT_LINE_NMI)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", shackled) MCFG_DEVICE_ADD("palette", DECO_RMC3, 0) // xxxxBBBBGGGGRRRR with custom weighting @@ -2363,7 +2363,6 @@ MACHINE_CONFIG_START(dec8_state::srdarwin) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", MC6809E, 2000000) /* MC68A09EP */ MCFG_CPU_PROGRAM_MAP(srdarwin_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", dec8_state, nmi_line_pulse) MCFG_CPU_ADD("audiocpu", DECO_222, 1500000) MCFG_CPU_PROGRAM_MAP(dec8_s_map) @@ -2388,6 +2387,7 @@ MACHINE_CONFIG_START(dec8_state::srdarwin) MCFG_SCREEN_RAW_PARAMS_DATA_EAST MCFG_SCREEN_UPDATE_DRIVER(dec8_state, screen_update_srdarwin) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", srdarwin) MCFG_DEVICE_ADD("palette", DECO_RMC3, 0) // xxxxBBBBGGGGRRRR with custom weighting @@ -2416,7 +2416,6 @@ MACHINE_CONFIG_START(dec8_state::cobracom) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", MC6809E, 2000000) /* MC68B09EP */ MCFG_CPU_PROGRAM_MAP(cobra_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", dec8_state, nmi_line_pulse) MCFG_CPU_ADD("audiocpu", M6502, 1500000) MCFG_CPU_PROGRAM_MAP(dec8_s_map) @@ -2445,6 +2444,7 @@ MACHINE_CONFIG_START(dec8_state::cobracom) MCFG_SCREEN_RAW_PARAMS_DATA_EAST MCFG_SCREEN_UPDATE_DRIVER(dec8_state, screen_update_cobracom) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", cobracom) MCFG_DEVICE_ADD("palette", DECO_RMC3, 0) // xxxxBBBBGGGGRRRR with custom weighting diff --git a/src/mame/drivers/divebomb.cpp b/src/mame/drivers/divebomb.cpp index d15cd8ded44..2e8a8d77064 100644 --- a/src/mame/drivers/divebomb.cpp +++ b/src/mame/drivers/divebomb.cpp @@ -391,17 +391,14 @@ MACHINE_CONFIG_START(divebomb_state::divebomb) MCFG_CPU_ADD("fgcpu", Z80,XTAL1/4) // ? MCFG_CPU_PROGRAM_MAP(divebomb_fgcpu_map) MCFG_CPU_IO_MAP(divebomb_fgcpu_iomap) - MCFG_CPU_VBLANK_INT_DRIVER("screen", divebomb_state, nmi_line_pulse) MCFG_CPU_ADD("spritecpu", Z80,XTAL1/4) // ? MCFG_CPU_PROGRAM_MAP(divebomb_spritecpu_map) MCFG_CPU_IO_MAP(divebomb_spritecpu_iomap) - MCFG_CPU_VBLANK_INT_DRIVER("screen", divebomb_state, nmi_line_pulse) MCFG_CPU_ADD("rozcpu", Z80,XTAL1/4) // ? MCFG_CPU_PROGRAM_MAP(divebomb_rozcpu_map) MCFG_CPU_IO_MAP(divebomb_rozcpu_iomap) - MCFG_CPU_VBLANK_INT_DRIVER("screen", divebomb_state, nmi_line_pulse) MCFG_QUANTUM_PERFECT_CPU("fgcpu") @@ -447,6 +444,9 @@ MACHINE_CONFIG_START(divebomb_state::divebomb) MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 256-1-32) MCFG_SCREEN_UPDATE_DRIVER(divebomb_state, screen_update_divebomb) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("fgcpu", INPUT_LINE_NMI)) + MCFG_DEVCB_CHAIN_OUTPUT(INPUTLINE("spritecpu", INPUT_LINE_NMI)) + MCFG_DEVCB_CHAIN_OUTPUT(INPUTLINE("rozcpu", INPUT_LINE_NMI)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", divebomb) MCFG_PALETTE_ADD("palette", 0x400+0x400+0x400+0x100) diff --git a/src/mame/drivers/fantland.cpp b/src/mame/drivers/fantland.cpp index 53027e89cd9..a65083d887e 100644 --- a/src/mame/drivers/fantland.cpp +++ b/src/mame/drivers/fantland.cpp @@ -837,10 +837,10 @@ MACHINE_RESET_MEMBER(fantland_state,fantland) m_nmi_enable = 0; } -INTERRUPT_GEN_MEMBER(fantland_state::fantland_irq) +WRITE_LINE_MEMBER(fantland_state::fantland_irq) { - if (m_nmi_enable & 8) - device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE); + if (state && BIT(m_nmi_enable, 3)) + m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); } INTERRUPT_GEN_MEMBER(fantland_state::fantland_sound_irq) @@ -853,7 +853,6 @@ MACHINE_CONFIG_START(fantland_state::fantland) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8086, 8000000) // ? MCFG_CPU_PROGRAM_MAP(fantland_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", fantland_state, fantland_irq) MCFG_CPU_ADD("audiocpu", I8088, 8000000) // ? MCFG_CPU_PROGRAM_MAP(fantland_sound_map) @@ -874,6 +873,7 @@ MACHINE_CONFIG_START(fantland_state::fantland) MCFG_SCREEN_VISIBLE_AREA(0, 352-1, 0, 256-1) MCFG_SCREEN_UPDATE_DRIVER(fantland_state, screen_update_fantland) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(fantland_state, fantland_irq)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", fantland) MCFG_PALETTE_ADD("palette", 256) @@ -904,7 +904,6 @@ MACHINE_CONFIG_START(fantland_state::galaxygn) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8088, 8000000) // ? MCFG_CPU_PROGRAM_MAP(galaxygn_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", fantland_state, fantland_irq) MCFG_CPU_ADD("audiocpu", I8088, 8000000) // ? MCFG_CPU_PROGRAM_MAP(fantland_sound_map) @@ -922,6 +921,7 @@ MACHINE_CONFIG_START(fantland_state::galaxygn) MCFG_SCREEN_VISIBLE_AREA(0, 352-1, 0, 256-1) MCFG_SCREEN_UPDATE_DRIVER(fantland_state, screen_update_fantland) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(fantland_state, fantland_irq)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", fantland) MCFG_PALETTE_ADD("palette", 256) @@ -986,7 +986,6 @@ MACHINE_CONFIG_START(fantland_state::borntofi) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", V20, 16000000/2) // D701080C-8 - NEC D70108C-8 V20 CPU, running at 8.000MHz [16/2] MCFG_CPU_PROGRAM_MAP(borntofi_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", fantland_state, fantland_irq) MCFG_CPU_ADD("audiocpu", I8088, 18432000/3) // 8088 - AMD P8088-2 CPU, running at 6.144MHz [18.432/3] MCFG_CPU_PROGRAM_MAP(borntofi_sound_map) @@ -1002,6 +1001,7 @@ MACHINE_CONFIG_START(fantland_state::borntofi) MCFG_SCREEN_VISIBLE_AREA(0, 352-1, 0, 256-1) MCFG_SCREEN_UPDATE_DRIVER(fantland_state, screen_update_fantland) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(fantland_state, fantland_irq)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", fantland) MCFG_PALETTE_ADD("palette", 256) @@ -1040,7 +1040,6 @@ MACHINE_CONFIG_START(fantland_state::wheelrun) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", V20, XTAL(18'000'000)/2) // D701080C-8 (V20) MCFG_CPU_PROGRAM_MAP(wheelrun_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", fantland_state, fantland_irq) MCFG_CPU_ADD("audiocpu", Z80, XTAL(18'000'000)/2) // Z8400BB1 (Z80B) MCFG_CPU_PROGRAM_MAP(wheelrun_sound_map) @@ -1057,6 +1056,7 @@ MACHINE_CONFIG_START(fantland_state::wheelrun) MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 0, 224-1) MCFG_SCREEN_UPDATE_DRIVER(fantland_state, screen_update_fantland) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(fantland_state, fantland_irq)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", fantland) MCFG_PALETTE_ADD("palette", 256) diff --git a/src/mame/drivers/gkigt.cpp b/src/mame/drivers/gkigt.cpp index 47b689c1fab..b524a67b493 100644 --- a/src/mame/drivers/gkigt.cpp +++ b/src/mame/drivers/gkigt.cpp @@ -132,7 +132,7 @@ public: DECLARE_READ8_MEMBER(irq_vector_r); DECLARE_WRITE8_MEMBER(unk_w); DECLARE_READ8_MEMBER(frame_number_r); - INTERRUPT_GEN_MEMBER(vblank_irq); + DECLARE_WRITE_LINE_MEMBER(vblank_irq); DECLARE_READ8_MEMBER(timer_r); DECLARE_READ16_MEMBER(version_r); @@ -586,9 +586,9 @@ void igt_gameking_state::machine_reset() m_quart1->ip2_w(1); // needs to be high } -INTERRUPT_GEN_MEMBER(igt_gameking_state::vblank_irq) +WRITE_LINE_MEMBER(igt_gameking_state::vblank_irq) { - if(m_irq_enable & 8) + if (state && BIT(m_irq_enable, 3)) { m_maincpu->set_input_line(I960_IRQ0, ASSERT_LINE); //machine().debug_break(); @@ -610,7 +610,6 @@ MACHINE_CONFIG_START(igt_gameking_state::igt_gameking) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I960, XTAL(24'000'000)) MCFG_CPU_PROGRAM_MAP(igt_gameking_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", igt_gameking_state, vblank_irq) MCFG_SC28C94_ADD("quart1", XTAL(24'000'000) / 6) MCFG_SC28C94_D_TX_CALLBACK(DEVWRITELINE("diag", rs232_port_device, write_txd)) @@ -631,6 +630,7 @@ MACHINE_CONFIG_START(igt_gameking_state::igt_gameking) MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1) MCFG_SCREEN_UPDATE_DRIVER(igt_gameking_state, screen_update_igt_gameking) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(igt_gameking_state, vblank_irq)) // Xilinx used as video chip XTAL(26'666'666) on board MCFG_PALETTE_ADD("palette", 0x100) diff --git a/src/mame/drivers/goldstar.cpp b/src/mame/drivers/goldstar.cpp index 2cdeb991e37..9dbbf59aac6 100644 --- a/src/mame/drivers/goldstar.cpp +++ b/src/mame/drivers/goldstar.cpp @@ -1194,6 +1194,8 @@ WRITE8_MEMBER(unkch_state::unkcm_0x02_w) //popmessage("unkcm_0x02_w %02x", data); m_vblank_irq_enable = data & 0x80; + if (!m_vblank_irq_enable) + m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE); output().set_lamp_value(0, (data >> 0) & 1); /* Bet-A / Stop 2 */ output().set_lamp_value(1, (data >> 1) & 1); /* Start / Stop All */ @@ -8070,6 +8072,9 @@ WRITE8_MEMBER(wingco_state::system_outputc_w) m_nmi_enable = data & 8; m_vidreg = data & 2; //popmessage("system_outputc_w %02x",data); + + if (!m_nmi_enable) + m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE); } WRITE8_MEMBER(goldstar_state::ay8910_outputa_w) @@ -8089,7 +8094,6 @@ MACHINE_CONFIG_START(goldstar_state::goldstar) MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK) MCFG_CPU_PROGRAM_MAP(goldstar_map) MCFG_CPU_IO_MAP(goldstar_readport) - MCFG_CPU_VBLANK_INT_DRIVER("screen", goldstar_state, irq0_line_hold) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) @@ -8099,6 +8103,7 @@ MACHINE_CONFIG_START(goldstar_state::goldstar) MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_goldstar) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(HOLDLINE("maincpu", 0)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", goldstar) MCFG_PALETTE_ADD("palette", 256) @@ -8126,7 +8131,6 @@ MACHINE_CONFIG_START(goldstar_state::goldstbl) MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK) MCFG_CPU_PROGRAM_MAP(goldstar_map) MCFG_CPU_IO_MAP(goldstar_readport) - MCFG_CPU_VBLANK_INT_DRIVER("screen", goldstar_state, irq0_line_hold) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) @@ -8136,6 +8140,7 @@ MACHINE_CONFIG_START(goldstar_state::goldstbl) MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_goldstar) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(HOLDLINE("maincpu", 0)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", bl) MCFG_PALETTE_ADD("palette", 256) @@ -8172,7 +8177,6 @@ MACHINE_CONFIG_START(sanghopm_state::star100) MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK) MCFG_CPU_PROGRAM_MAP(star100_map) MCFG_CPU_IO_MAP(star100_readport) - MCFG_CPU_VBLANK_INT_DRIVER("screen", sanghopm_state, irq0_line_hold) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) @@ -8182,6 +8186,7 @@ MACHINE_CONFIG_START(sanghopm_state::star100) MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(sanghopm_state, screen_update_sangho) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(HOLDLINE("maincpu", 0)) MCFG_PALETTE_ADD("palette", 0x100) MCFG_RAMDAC_ADD("ramdac", ramdac_map, "palette") @@ -8213,7 +8218,6 @@ MACHINE_CONFIG_START(goldstar_state::super9) // MCFG_CPU_PROGRAM_MAP(nfm_map) MCFG_CPU_IO_MAP(goldstar_readport) // MCFG_CPU_IO_MAP(unkch_portmap) - MCFG_CPU_VBLANK_INT_DRIVER("screen", goldstar_state, irq0_line_hold) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) @@ -8223,6 +8227,7 @@ MACHINE_CONFIG_START(goldstar_state::super9) MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_goldstar) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(HOLDLINE("maincpu", 0)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", super9) MCFG_PALETTE_ADD("palette", 256) @@ -8309,7 +8314,6 @@ MACHINE_CONFIG_START(cb3_state::ncb3) MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK) MCFG_CPU_PROGRAM_MAP(ncb3_map) MCFG_CPU_IO_MAP(ncb3_readwriteport) - MCFG_CPU_VBLANK_INT_DRIVER("screen", goldstar_state, irq0_line_hold) MCFG_DEVICE_ADD("ppi8255_0", I8255A, 0) MCFG_I8255_IN_PORTA_CB(IOPORT("IN0")) @@ -8331,6 +8335,7 @@ MACHINE_CONFIG_START(cb3_state::ncb3) MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_goldstar) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(HOLDLINE("maincpu", 0)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", ncb3) MCFG_PALETTE_ADD("palette", 256) @@ -8384,7 +8389,6 @@ MACHINE_CONFIG_START(goldstar_state::wcherry) MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK) MCFG_CPU_PROGRAM_MAP(wcherry_map) MCFG_CPU_IO_MAP(wcherry_readwriteport) - MCFG_CPU_VBLANK_INT_DRIVER("screen", goldstar_state, irq0_line_hold) MCFG_DEVICE_ADD("ppi8255_0", I8255A, 0) MCFG_I8255_IN_PORTA_CB(IOPORT("IN0")) @@ -8406,6 +8410,7 @@ MACHINE_CONFIG_START(goldstar_state::wcherry) MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_goldstar) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(HOLDLINE("maincpu", 0)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", cb3e) MCFG_PALETTE_ADD("palette", 256) @@ -8433,7 +8438,6 @@ MACHINE_CONFIG_START(cmaster_state::cm) MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK) MCFG_CPU_PROGRAM_MAP(cm_map) MCFG_CPU_IO_MAP(cm_portmap) - MCFG_CPU_VBLANK_INT_DRIVER("screen", goldstar_state, irq0_line_hold) MCFG_DEVICE_ADD("ppi8255_0", I8255A, 0) MCFG_I8255_IN_PORTA_CB(IOPORT("IN0")) @@ -8453,6 +8457,7 @@ MACHINE_CONFIG_START(cmaster_state::cm) MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_goldstar) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(HOLDLINE("maincpu", 0)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", cmbitmap) MCFG_PALETTE_ADD("palette", 256) @@ -8481,7 +8486,6 @@ MACHINE_CONFIG_START(goldstar_state::cmast91) MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK) MCFG_CPU_PROGRAM_MAP(cm_map) MCFG_CPU_IO_MAP(cmast91_portmap) - MCFG_CPU_VBLANK_INT_DRIVER("screen", goldstar_state, irq0_line_hold) MCFG_DEVICE_ADD("ppi8255_0", I8255A, 0) MCFG_I8255_IN_PORTA_CB(IOPORT("IN0")) @@ -8501,6 +8505,7 @@ MACHINE_CONFIG_START(goldstar_state::cmast91) MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 1*8, 31*8-1) MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_cmast91) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(HOLDLINE("maincpu", 0)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", cmast91) MCFG_PALETTE_ADD("palette", 256) @@ -8519,10 +8524,10 @@ MACHINE_CONFIG_END -INTERRUPT_GEN_MEMBER(wingco_state::masked_irq) +WRITE_LINE_MEMBER(wingco_state::masked_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); } MACHINE_CONFIG_START(wingco_state::lucky8) @@ -8531,7 +8536,6 @@ MACHINE_CONFIG_START(wingco_state::lucky8) MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK) MCFG_CPU_PROGRAM_MAP(lucky8_map) //MCFG_CPU_IO_MAP(goldstar_readport) - MCFG_CPU_VBLANK_INT_DRIVER("screen", wingco_state, masked_irq) MCFG_DEVICE_ADD("ppi8255_0", I8255A, 0) MCFG_I8255_IN_PORTA_CB(IOPORT("IN0")) @@ -8557,6 +8561,7 @@ MACHINE_CONFIG_START(wingco_state::lucky8) MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_goldstar) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(wingco_state, masked_irq)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", ncb3) MCFG_PALETTE_ADD("palette", 256) @@ -8586,7 +8591,6 @@ MACHINE_CONFIG_START(wingco_state::bingowng) MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK) MCFG_CPU_PROGRAM_MAP(lucky8_map) //MCFG_CPU_IO_MAP(goldstar_readport) - MCFG_CPU_VBLANK_INT_DRIVER("screen", wingco_state, masked_irq) MCFG_DEVICE_ADD("ppi8255_0", I8255A, 0) MCFG_I8255_IN_PORTA_CB(IOPORT("IN0")) @@ -8612,6 +8616,7 @@ MACHINE_CONFIG_START(wingco_state::bingowng) MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(wingco_state, screen_update_bingowng) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(wingco_state, masked_irq)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", ncb3) MCFG_PALETTE_ADD("palette", 256) @@ -8713,7 +8718,6 @@ MACHINE_CONFIG_START(wingco_state::magodds) MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK) MCFG_CPU_PROGRAM_MAP(magodds_map) //MCFG_CPU_IO_MAP(goldstar_readport) - MCFG_CPU_VBLANK_INT_DRIVER("screen", wingco_state, masked_irq) MCFG_DEVICE_ADD("ppi8255_0", I8255A, 0) MCFG_I8255_IN_PORTA_CB(IOPORT("IN0")) @@ -8739,6 +8743,7 @@ MACHINE_CONFIG_START(wingco_state::magodds) MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(wingco_state, screen_update_magical) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(wingco_state, masked_irq)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", magodds) MCFG_PALETTE_ADD("palette", 256) @@ -8768,7 +8773,6 @@ MACHINE_CONFIG_START(goldstar_state::kkotnoli) MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK) MCFG_CPU_PROGRAM_MAP(kkotnoli_map) //MCFG_CPU_IO_MAP(goldstar_readport) - MCFG_CPU_VBLANK_INT_DRIVER("screen", goldstar_state, nmi_line_pulse) MCFG_DEVICE_ADD("ppi8255_0", I8255A, 0) MCFG_I8255_IN_PORTA_CB(IOPORT("IN0")) @@ -8790,6 +8794,7 @@ MACHINE_CONFIG_START(goldstar_state::kkotnoli) MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_goldstar) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", ncb3) MCFG_PALETTE_ADD("palette", 256) @@ -8812,7 +8817,6 @@ MACHINE_CONFIG_START(goldstar_state::ladylinr) MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK) MCFG_CPU_PROGRAM_MAP(ladylinr_map) //MCFG_CPU_IO_MAP(goldstar_readport) - MCFG_CPU_VBLANK_INT_DRIVER("screen", goldstar_state, nmi_line_pulse) MCFG_DEVICE_ADD("ppi8255_0", I8255A, 0) MCFG_I8255_IN_PORTA_CB(IOPORT("IN0")) @@ -8830,6 +8834,7 @@ MACHINE_CONFIG_START(goldstar_state::ladylinr) MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_goldstar) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", ncb3) MCFG_PALETTE_ADD("palette", 256) @@ -8855,7 +8860,6 @@ MACHINE_CONFIG_START(wingco_state::wcat3) MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK) MCFG_CPU_PROGRAM_MAP(wcat3_map) //MCFG_CPU_IO_MAP(goldstar_readport) - MCFG_CPU_VBLANK_INT_DRIVER("screen", goldstar_state, nmi_line_pulse) MCFG_DEVICE_ADD("ppi8255_0", I8255A, 0) MCFG_I8255_IN_PORTA_CB(IOPORT("IN0")) @@ -8881,6 +8885,7 @@ MACHINE_CONFIG_START(wingco_state::wcat3) MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_goldstar) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", ncb3) MCFG_PALETTE_ADD("palette", 256) @@ -8912,7 +8917,6 @@ MACHINE_CONFIG_START(cmaster_state::amcoe1) MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK) MCFG_CPU_PROGRAM_MAP(cm_map) MCFG_CPU_IO_MAP(amcoe1_portmap) - MCFG_CPU_VBLANK_INT_DRIVER("screen", goldstar_state, irq0_line_hold) MCFG_DEVICE_ADD("ppi8255_0", I8255A, 0) MCFG_I8255_IN_PORTA_CB(IOPORT("IN0")) @@ -8932,6 +8936,7 @@ MACHINE_CONFIG_START(cmaster_state::amcoe1) MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_goldstar) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(HOLDLINE("maincpu", 0)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", cm) MCFG_PALETTE_ADD("palette", 256) @@ -8969,7 +8974,6 @@ MACHINE_CONFIG_START(cmaster_state::amcoe2) MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK) MCFG_CPU_PROGRAM_MAP(cm_map) MCFG_CPU_IO_MAP(amcoe2_portmap) - MCFG_CPU_VBLANK_INT_DRIVER("screen", goldstar_state, irq0_line_hold) MCFG_DEVICE_ADD("ppi8255_0", I8255A, 0) MCFG_I8255_IN_PORTA_CB(IOPORT("IN0")) @@ -8989,6 +8993,7 @@ MACHINE_CONFIG_START(cmaster_state::amcoe2) MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_goldstar) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(HOLDLINE("maincpu", 0)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", cm) MCFG_PALETTE_ADD("palette", 256) @@ -9016,10 +9021,10 @@ MACHINE_CONFIG_START(cmaster_state::nfm) MACHINE_CONFIG_END -INTERRUPT_GEN_MEMBER(unkch_state::vblank_irq) +WRITE_LINE_MEMBER(unkch_state::vblank_irq) { - if (m_vblank_irq_enable) - device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE); + if (state && m_vblank_irq_enable) + m_maincpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE); } MACHINE_CONFIG_START(unkch_state::unkch) @@ -9028,7 +9033,6 @@ MACHINE_CONFIG_START(unkch_state::unkch) MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK) MCFG_CPU_PROGRAM_MAP(unkch_map) MCFG_CPU_IO_MAP(unkch_portmap) - MCFG_CPU_VBLANK_INT_DRIVER("screen", unkch_state, vblank_irq) MCFG_NVRAM_ADD_1FILL("nvram") @@ -9040,6 +9044,7 @@ MACHINE_CONFIG_START(unkch_state::unkch) MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 1*8, 31*8-1) MCFG_SCREEN_UPDATE_DRIVER(unkch_state, screen_update_unkch) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(unkch_state, vblank_irq)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", unkch) MCFG_PALETTE_ADD("palette", 512) @@ -9067,7 +9072,6 @@ MACHINE_CONFIG_START(goldstar_state::pkrmast) MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK) MCFG_CPU_PROGRAM_MAP(cm_map) MCFG_CPU_IO_MAP(pkrmast_portmap) - MCFG_CPU_VBLANK_INT_DRIVER("screen", goldstar_state, irq0_line_hold) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) @@ -9077,6 +9081,7 @@ MACHINE_CONFIG_START(goldstar_state::pkrmast) MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_goldstar) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(HOLDLINE("maincpu", 0)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", pkrmast) MCFG_PALETTE_ADD("palette", 256) @@ -9100,7 +9105,6 @@ MACHINE_CONFIG_START(unkch_state::megaline) MCFG_CPU_ADD("maincpu", Z80, CPU_CLOCK) MCFG_CPU_PROGRAM_MAP(megaline_map) MCFG_CPU_IO_MAP(megaline_portmap) - MCFG_CPU_VBLANK_INT_DRIVER("screen", goldstar_state, nmi_line_pulse) //MCFG_DEVICE_ADD("ppi8255_0", I8255A, 0) //MCFG_DEVICE_ADD("ppi8255_1", I8255A, 0) @@ -9114,6 +9118,7 @@ MACHINE_CONFIG_START(unkch_state::megaline) MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_goldstar) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", megaline) MCFG_PALETTE_ADD("palette", 256) @@ -9150,7 +9155,6 @@ MACHINE_CONFIG_START(unkch_state::bonusch) MCFG_CPU_ADD("maincpu", Z80, 12_MHz_XTAL / 2) MCFG_CPU_PROGRAM_MAP(bonusch_map) MCFG_CPU_IO_MAP(bonusch_portmap) - MCFG_CPU_VBLANK_INT_DRIVER("screen", goldstar_state, nmi_line_pulse) MCFG_CPU_ADD("mcu", I80C51, 12_MHz_XTAL) MCFG_DEVICE_DISABLE() @@ -9162,6 +9166,7 @@ MACHINE_CONFIG_START(unkch_state::bonusch) MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(goldstar_state, screen_update_goldstar) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", megaline) MCFG_PALETTE_ADD("palette", 256) diff --git a/src/mame/drivers/hotblock.cpp b/src/mame/drivers/hotblock.cpp index 60b7ca6bb1d..372b6367197 100644 --- a/src/mame/drivers/hotblock.cpp +++ b/src/mame/drivers/hotblock.cpp @@ -212,16 +212,13 @@ MACHINE_CONFIG_START(hotblock_state::hotblock) MCFG_CPU_ADD("maincpu", I8088, 10000000) MCFG_CPU_PROGRAM_MAP(hotblock_map) MCFG_CPU_IO_MAP(hotblock_io) - MCFG_CPU_VBLANK_INT_DRIVER("screen", hotblock_state, nmi_line_pulse) /* right? */ /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(1024,1024) - MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 200-1) + MCFG_SCREEN_RAW_PARAMS(8000000, 512, 0, 320, 312, 0, 200) // 15.625 kHz horizontal??? MCFG_SCREEN_UPDATE_DRIVER(hotblock_state, screen_update) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI)) // right? MCFG_PALETTE_ADD("palette", 256) diff --git a/src/mame/drivers/hp16500.cpp b/src/mame/drivers/hp16500.cpp index 229ff4c09d6..3759412aa67 100644 --- a/src/mame/drivers/hp16500.cpp +++ b/src/mame/drivers/hp16500.cpp @@ -97,8 +97,6 @@ public: MC6845_UPDATE_ROW(crtc_update_row); MC6845_UPDATE_ROW(crtc_update_row_1650); - INTERRUPT_GEN_MEMBER(vblank); - void hp16500(machine_config &config); void hp16500a(machine_config &config); void hp1651(machine_config &config); @@ -324,11 +322,6 @@ void hp16500_state::hp16500_map(address_map &map) map(0x00800000, 0x009fffff).ram(); } -INTERRUPT_GEN_MEMBER(hp16500_state::vblank) -{ - m_maincpu->set_input_line(M68K_IRQ_1, ASSERT_LINE); -} - void hp16500_state::video_start() { m_count = 0; @@ -480,17 +473,16 @@ MACHINE_CONFIG_START(hp16500_state::hp16500) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68EC030, 25000000) MCFG_CPU_PROGRAM_MAP(hp16500_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", hp16500_state, vblank) MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_UPDATE_DRIVER(hp16500_state, screen_update_hp16500) MCFG_SCREEN_SIZE(576,384) MCFG_SCREEN_VISIBLE_AREA(0, 576-1, 0, 384-1) MCFG_SCREEN_REFRESH_RATE(60) - + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(hp16500_state, vsync_changed)) // FIXME: Where is the AP line connected to? The MLC documentation recommends // connecting it to VBLANK - MCFG_SCREEN_VBLANK_CALLBACK(DEVWRITELINE("mlc", hp_hil_mlc_device, ap_w)) + MCFG_DEVCB_CHAIN_OUTPUT(DEVWRITELINE("mlc", hp_hil_mlc_device, ap_w)) MCFG_DEVICE_ADD("mlc", HP_HIL_MLC, XTAL(15'920'000)/2) MCFG_HP_HIL_INT_CALLBACK(WRITELINE(hp16500_state, irq_2)) diff --git a/src/mame/drivers/igs009.cpp b/src/mame/drivers/igs009.cpp index 5811bb962f6..570fcf06232 100644 --- a/src/mame/drivers/igs009.cpp +++ b/src/mame/drivers/igs009.cpp @@ -96,7 +96,7 @@ public: void show_out(); DECLARE_CUSTOM_INPUT_MEMBER(hopper_r); - INTERRUPT_GEN_MEMBER(interrupt); + DECLARE_WRITE_LINE_MEMBER(vblank_irq); TILE_GET_INFO_MEMBER(get_jingbell_reel1_tile_info); TILE_GET_INFO_MEMBER(get_gp98_reel1_tile_info); @@ -810,10 +810,10 @@ void igs009_state::machine_reset() m_video_enable = 1; } -INTERRUPT_GEN_MEMBER(igs009_state::interrupt) +WRITE_LINE_MEMBER(igs009_state::vblank_irq) { - if (m_nmi_enable & 0x80) - device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE); + if (state && BIT(m_nmi_enable, 7)) + m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); } MACHINE_CONFIG_START(igs009_state::jingbell) @@ -821,7 +821,6 @@ MACHINE_CONFIG_START(igs009_state::jingbell) MCFG_CPU_ADD("maincpu", Z180, XTAL(12'000'000) / 2) /* HD64180RP8, 8 MHz? */ MCFG_CPU_PROGRAM_MAP(jingbell_map) MCFG_CPU_IO_MAP(jingbell_portmap) - MCFG_CPU_VBLANK_INT_DRIVER("screen", igs009_state, interrupt) MCFG_NVRAM_ADD_0FILL("nvram") @@ -843,6 +842,7 @@ MACHINE_CONFIG_START(igs009_state::jingbell) MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-16-1) MCFG_SCREEN_UPDATE_DRIVER(igs009_state, screen_update) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(igs009_state, vblank_irq)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", jingbell) MCFG_PALETTE_ADD("palette", 0x400) diff --git a/src/mame/drivers/igs_fear.cpp b/src/mame/drivers/igs_fear.cpp index da71fd9a79a..9eda32e95a8 100644 --- a/src/mame/drivers/igs_fear.cpp +++ b/src/mame/drivers/igs_fear.cpp @@ -82,8 +82,6 @@ MACHINE_CONFIG_START(igs_fear_state::igs_fear) MCFG_CPU_ADD("maincpu",ARM7, 50000000/2) MCFG_CPU_PROGRAM_MAP(igs_igs_fear_map) -// MCFG_CPU_VBLANK_INT_DRIVER("screen", igs_fear_state, igs_majhong_interrupt) - MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) diff --git a/src/mame/drivers/igs_m027.cpp b/src/mame/drivers/igs_m027.cpp index 7833d474b6d..5cdb25a5a99 100644 --- a/src/mame/drivers/igs_m027.cpp +++ b/src/mame/drivers/igs_m027.cpp @@ -61,7 +61,7 @@ public: virtual void video_start() override; uint32_t screen_update_igs_majhong(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - INTERRUPT_GEN_MEMBER(igs_majhong_interrupt); + DECLARE_WRITE_LINE_MEMBER(vblank_irq); void sdwx_gfx_decrypt(); void pgm_create_dummy_internal_arm_region(); @@ -319,18 +319,17 @@ INPUT_PORTS_END -INTERRUPT_GEN_MEMBER(igs_m027_state::igs_majhong_interrupt) +WRITE_LINE_MEMBER(igs_m027_state::vblank_irq) { - device.execute().pulse_input_line(ARM7_FIRQ_LINE, device.execute().minimum_quantum_time()); + if (state) + m_maincpu->pulse_input_line(ARM7_FIRQ_LINE, m_maincpu->minimum_quantum_time()); } MACHINE_CONFIG_START(igs_m027_state::igs_majhong) - MCFG_CPU_ADD("maincpu",ARM7, 20000000) - + MCFG_CPU_ADD("maincpu", ARM7, 20000000) MCFG_CPU_PROGRAM_MAP(igs_majhong_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", igs_m027_state, igs_majhong_interrupt) //MCFG_NVRAM_ADD_0FILL("nvram") @@ -341,6 +340,7 @@ MACHINE_CONFIG_START(igs_m027_state::igs_majhong) MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1) MCFG_SCREEN_UPDATE_DRIVER(igs_m027_state, screen_update_igs_majhong) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(igs_m027_state, vblank_irq)) MCFG_PALETTE_ADD("palette", 0x200) // MCFG_PALETTE_FORMAT(xGGGGGRRRRRBBBBB) @@ -360,11 +360,9 @@ MACHINE_CONFIG_END MACHINE_CONFIG_START(igs_m027_state::amazonia) - MCFG_CPU_ADD("maincpu",ARM7, 20000000) - + MCFG_CPU_ADD("maincpu", ARM7, 20000000) MCFG_CPU_PROGRAM_MAP(igs_majhong_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", igs_m027_state, igs_majhong_interrupt) //MCFG_NVRAM_ADD_0FILL("nvram") @@ -376,6 +374,7 @@ MACHINE_CONFIG_START(igs_m027_state::amazonia) MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1) MCFG_SCREEN_UPDATE_DRIVER(igs_m027_state, screen_update_igs_majhong) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(igs_m027_state, vblank_irq)) MCFG_PALETTE_ADD("palette", 0x200) // MCFG_PALETTE_FORMAT(xGGGGGRRRRRBBBBB) diff --git a/src/mame/drivers/jokrwild.cpp b/src/mame/drivers/jokrwild.cpp index 7616b724ad6..6016f207af1 100644 --- a/src/mame/drivers/jokrwild.cpp +++ b/src/mame/drivers/jokrwild.cpp @@ -410,7 +410,6 @@ MACHINE_CONFIG_START(jokrwild_state::jokrwild) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, MASTER_CLOCK/2) /* guess */ MCFG_CPU_PROGRAM_MAP(jokrwild_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", jokrwild_state, nmi_line_pulse) // MCFG_NVRAM_ADD_0FILL("nvram") @@ -440,6 +439,7 @@ MACHINE_CONFIG_START(jokrwild_state::jokrwild) MCFG_MC6845_ADD("crtc", MC6845, "screen", MASTER_CLOCK/16) /* guess */ MCFG_MC6845_SHOW_BORDER_AREA(false) MCFG_MC6845_CHAR_WIDTH(8) + MCFG_MC6845_OUT_VSYNC_CB(INPUTLINE("maincpu", INPUT_LINE_NMI)) MACHINE_CONFIG_END diff --git a/src/mame/drivers/mac.cpp b/src/mame/drivers/mac.cpp index 520205762a3..18d0f433053 100644 --- a/src/mame/drivers/mac.cpp +++ b/src/mame/drivers/mac.cpp @@ -100,8 +100,11 @@ // CA2: SCSI interrupt = 0x01 // CB1: ASC interrupt = 0x10 -INTERRUPT_GEN_MEMBER(mac_state::mac_rbv_vbl) +WRITE_LINE_MEMBER(mac_state::mac_rbv_vbl) { + if (!state) + return; + m_rbv_regs[2] &= ~0x40; // set vblank signal m_rbv_vbltime = 10; @@ -1259,7 +1262,6 @@ MACHINE_CONFIG_START(mac_state::maclc) MCFG_CPU_REPLACE("maincpu", M68020HMMU, C15M) MCFG_CPU_PROGRAM_MAP(maclc_map) - MCFG_CPU_VBLANK_INT_DRIVER(MAC_SCREEN_NAME, mac_state, mac_rbv_vbl) MCFG_CPU_DISASSEMBLE_OVERRIDE(mac_state, mac_dasm_override) MCFG_PALETTE_MODIFY("palette") @@ -1273,6 +1275,7 @@ MACHINE_CONFIG_START(mac_state::maclc) MCFG_SCREEN_SIZE(1024,768) MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1) MCFG_SCREEN_UPDATE_DRIVER(mac_state, screen_update_macv8) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(mac_state, mac_rbv_vbl)) MCFG_DEFAULT_LAYOUT(layout_mac) MCFG_RAM_MODIFY(RAM_TAG) @@ -1317,7 +1320,6 @@ MACHINE_CONFIG_START(mac_state::maclc2) MCFG_CPU_REPLACE("maincpu", M68030, C15M) MCFG_CPU_PROGRAM_MAP(maclc_map) - MCFG_CPU_VBLANK_INT_DRIVER(MAC_SCREEN_NAME, mac_state, mac_rbv_vbl) MCFG_CPU_DISASSEMBLE_OVERRIDE(mac_state, mac_dasm_override) MCFG_RAM_MODIFY(RAM_TAG) @@ -1344,7 +1346,6 @@ MACHINE_CONFIG_START(mac_state::maclc3) MCFG_CPU_REPLACE("maincpu", M68030, 25000000) MCFG_CPU_PROGRAM_MAP(maclc3_map) - MCFG_CPU_VBLANK_INT_DRIVER(MAC_SCREEN_NAME, mac_state, mac_rbv_vbl) MCFG_CPU_DISASSEMBLE_OVERRIDE(mac_state, mac_dasm_override) MCFG_VIDEO_START_OVERRIDE(mac_state,macsonora) @@ -1387,7 +1388,6 @@ MACHINE_CONFIG_START(mac_state::maciivx) MCFG_CPU_REPLACE("maincpu", M68030, C32M) MCFG_CPU_PROGRAM_MAP(maclc3_map) - MCFG_CPU_VBLANK_INT_DRIVER(MAC_SCREEN_NAME, mac_state, mac_rbv_vbl) MCFG_CPU_DISASSEMBLE_OVERRIDE(mac_state, mac_dasm_override) MCFG_VIDEO_START_OVERRIDE(mac_state,macv8) @@ -1424,7 +1424,6 @@ MACHINE_CONFIG_START(mac_state::maciivi) MCFG_CPU_REPLACE("maincpu", M68030, C15M) MCFG_CPU_PROGRAM_MAP(maclc3_map) - MCFG_CPU_VBLANK_INT_DRIVER(MAC_SCREEN_NAME, mac_state, mac_rbv_vbl) MCFG_CPU_DISASSEMBLE_OVERRIDE(mac_state, mac_dasm_override) MCFG_VIDEO_START_OVERRIDE(mac_state,macv8) @@ -1752,7 +1751,6 @@ MACHINE_CONFIG_START(mac_state::macclas2) maclc(config); MCFG_CPU_REPLACE("maincpu", M68030, C15M) MCFG_CPU_PROGRAM_MAP(maclc_map) - MCFG_CPU_VBLANK_INT_DRIVER(MAC_SCREEN_NAME, mac_state, mac_rbv_vbl) MCFG_CPU_DISASSEMBLE_OVERRIDE(mac_state, mac_dasm_override) MCFG_VIDEO_START_OVERRIDE(mac_state,macv8) @@ -1783,7 +1781,6 @@ MACHINE_CONFIG_START(mac_state::maciici) MCFG_CPU_REPLACE("maincpu", M68030, 25000000) MCFG_CPU_PROGRAM_MAP(maciici_map) - MCFG_CPU_VBLANK_INT_DRIVER(MAC_SCREEN_NAME, mac_state, mac_rbv_vbl) MCFG_CPU_DISASSEMBLE_OVERRIDE(mac_state, mac_dasm_override) MCFG_PALETTE_MODIFY("palette") @@ -1802,6 +1799,7 @@ MACHINE_CONFIG_START(mac_state::maciici) MCFG_SCREEN_SIZE(640, 870) MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1) MCFG_SCREEN_UPDATE_DRIVER(mac_state, screen_update_macrbv) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(mac_state, mac_rbv_vbl)) MCFG_DEFAULT_LAYOUT(layout_mac) /* internal ram */ @@ -1815,7 +1813,6 @@ MACHINE_CONFIG_START(mac_state::maciisi) MCFG_CPU_REPLACE("maincpu", M68030, 20000000) MCFG_CPU_PROGRAM_MAP(maciici_map) - MCFG_CPU_VBLANK_INT_DRIVER(MAC_SCREEN_NAME, mac_state, mac_rbv_vbl) MCFG_CPU_DISASSEMBLE_OVERRIDE(mac_state, mac_dasm_override) MCFG_PALETTE_MODIFY("palette") @@ -1837,6 +1834,7 @@ MACHINE_CONFIG_START(mac_state::maciisi) MCFG_SCREEN_SIZE(640, 870) MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1) MCFG_SCREEN_UPDATE_DRIVER(mac_state, screen_update_macrbv) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(mac_state, mac_rbv_vbl)) MCFG_DEFAULT_LAYOUT(layout_mac) /* internal ram */ diff --git a/src/mame/drivers/mastboy.cpp b/src/mame/drivers/mastboy.cpp index ed446d55c9b..cd4d1982d84 100644 --- a/src/mame/drivers/mastboy.cpp +++ b/src/mame/drivers/mastboy.cpp @@ -504,8 +504,7 @@ private: uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - INTERRUPT_GEN_MEMBER(interrupt); - + DECLARE_WRITE_LINE_MEMBER(vblank_irq); void bank_c000_map(address_map &map); void mastboy_io_map(address_map &map); void mastboy_map(address_map &map); @@ -612,12 +611,10 @@ WRITE_LINE_MEMBER(mastboy_state::irq0_ack_w) m_maincpu->set_input_line(0, CLEAR_LINE); } -INTERRUPT_GEN_MEMBER(mastboy_state::interrupt) +WRITE_LINE_MEMBER(mastboy_state::vblank_irq) { - if (m_outlatch->q0_r() == 1) - { - device.execute().set_input_line(0, ASSERT_LINE); - } + if (state && m_outlatch->q0_r() == 1) + m_maincpu->set_input_line(0, ASSERT_LINE); } /* Memory Maps */ @@ -814,7 +811,6 @@ MACHINE_CONFIG_START(mastboy_state::mastboy) MCFG_CPU_ADD("maincpu", Z180, 12000000/2) /* HD647180X0CP6-1M1R */ MCFG_CPU_PROGRAM_MAP(mastboy_map) MCFG_CPU_IO_MAP(mastboy_io_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", mastboy_state, interrupt) MCFG_EEPROM_2816_ADD("earom") @@ -840,6 +836,7 @@ MACHINE_CONFIG_START(mastboy_state::mastboy) MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 256-16-1) MCFG_SCREEN_UPDATE_DRIVER(mastboy_state, screen_update) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(mastboy_state, vblank_irq)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", mastboy) MCFG_PALETTE_ADD("palette", 0x100) diff --git a/src/mame/drivers/maygayv1.cpp b/src/mame/drivers/maygayv1.cpp index 3971a5bf3a7..f8461b456b2 100644 --- a/src/mame/drivers/maygayv1.cpp +++ b/src/mame/drivers/maygayv1.cpp @@ -251,7 +251,6 @@ public: virtual void video_start() override; uint32_t screen_update_maygayv1(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); DECLARE_WRITE_LINE_MEMBER(screen_vblank_maygayv1); - INTERRUPT_GEN_MEMBER(vsync_interrupt); DECLARE_WRITE8_MEMBER(data_from_i8031); DECLARE_READ8_MEMBER(data_to_i8031); DECLARE_WRITE_LINE_MEMBER(duart_irq_handler); @@ -473,6 +472,9 @@ WRITE_LINE_MEMBER(maygayv1_state::screen_vblank_maygayv1) m_palette->set_pen_color(entry & 0xf, pal4bit(entry >> 12), pal4bit(entry >> 8), pal4bit(entry >> 4)); } } + + if (m_vsync_latch_preset) + m_maincpu->set_input_line(3, ASSERT_LINE); } } @@ -866,17 +868,9 @@ void maygayv1_state::machine_reset() } -INTERRUPT_GEN_MEMBER(maygayv1_state::vsync_interrupt) -{ - if (m_vsync_latch_preset) - m_maincpu->set_input_line(3, ASSERT_LINE); -} - - MACHINE_CONFIG_START(maygayv1_state::maygayv1) MCFG_CPU_ADD("maincpu", M68000, MASTER_CLOCK / 2) MCFG_CPU_PROGRAM_MAP(main_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", maygayv1_state, vsync_interrupt) MCFG_CPU_ADD("soundcpu", I8052, SOUND_CLOCK) MCFG_CPU_PROGRAM_MAP(sound_prg) diff --git a/src/mame/drivers/meadows.cpp b/src/mame/drivers/meadows.cpp index 2c9591502fa..a89ffd74216 100644 --- a/src/mame/drivers/meadows.cpp +++ b/src/mame/drivers/meadows.cpp @@ -212,11 +212,14 @@ INPUT_CHANGED_MEMBER(meadows_state::coin_inserted) * *************************************/ -INTERRUPT_GEN_MEMBER(meadows_state::meadows_interrupt) +WRITE_LINE_MEMBER(meadows_state::meadows_vblank_irq) { - /* fake something toggling the sense input line of the S2650 */ - m_main_sense_state ^= 1; - m_maincpu->set_input_line(S2650_SENSE_LINE, m_main_sense_state ? ASSERT_LINE : CLEAR_LINE); + if (state) + { + /* fake something toggling the sense input line of the S2650 */ + m_main_sense_state ^= 1; + m_maincpu->set_input_line(S2650_SENSE_LINE, m_main_sense_state ? ASSERT_LINE : CLEAR_LINE); + } } @@ -227,10 +230,13 @@ INTERRUPT_GEN_MEMBER(meadows_state::meadows_interrupt) * *************************************/ -INTERRUPT_GEN_MEMBER(meadows_state::minferno_interrupt) +WRITE_LINE_MEMBER(meadows_state::minferno_vblank_irq) { - m_main_sense_state++; - device.execute().set_input_line(1, (m_main_sense_state & 0x40) ? ASSERT_LINE : CLEAR_LINE ); + if (state) + { + m_main_sense_state++; + m_maincpu->set_input_line(1, (m_main_sense_state & 0x40) ? ASSERT_LINE : CLEAR_LINE); + } } @@ -620,7 +626,6 @@ MACHINE_CONFIG_START(meadows_state::meadows) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", S2650, MASTER_CLOCK/8) /* 5MHz / 8 = 625 kHz */ MCFG_CPU_PROGRAM_MAP(meadows_main_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", meadows_state, meadows_interrupt) /* one interrupt per frame!? */ MCFG_CPU_ADD("audiocpu", S2650, MASTER_CLOCK/8) /* 5MHz / 8 = 625 kHz */ MCFG_CPU_PROGRAM_MAP(audio_map) @@ -635,6 +640,7 @@ MACHINE_CONFIG_START(meadows_state::meadows) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(meadows_state, screen_update_meadows) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(meadows_state, meadows_vblank_irq)) // one interrupt per frame!? MCFG_GFXDECODE_ADD("gfxdecode", "palette", meadows) MCFG_PALETTE_ADD_MONOCHROME("palette") @@ -658,7 +664,6 @@ MACHINE_CONFIG_START(meadows_state::minferno) MCFG_CPU_ADD("maincpu", S2650, MASTER_CLOCK/24) /* 5MHz / 8 / 3 = 208.33 kHz */ MCFG_CPU_PROGRAM_MAP(minferno_main_map) MCFG_CPU_DATA_MAP(minferno_data_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", meadows_state, minferno_interrupt) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) @@ -667,6 +672,7 @@ MACHINE_CONFIG_START(meadows_state::minferno) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 24*8-1) MCFG_SCREEN_UPDATE_DRIVER(meadows_state, screen_update_meadows) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(meadows_state, minferno_vblank_irq)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", minferno) MCFG_PALETTE_ADD_MONOCHROME("palette") @@ -681,7 +687,6 @@ MACHINE_CONFIG_START(meadows_state::bowl3d) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", S2650, MASTER_CLOCK/8) /* 5MHz / 8 = 625 kHz */ MCFG_CPU_PROGRAM_MAP(bowl3d_main_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", meadows_state, meadows_interrupt) /* one interrupt per frame!? */ MCFG_CPU_ADD("audiocpu", S2650, MASTER_CLOCK/8) /* 5MHz / 8 = 625 kHz */ MCFG_CPU_PROGRAM_MAP(audio_map) @@ -696,6 +701,7 @@ MACHINE_CONFIG_START(meadows_state::bowl3d) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(meadows_state, screen_update_meadows) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(meadows_state, meadows_vblank_irq)) // one interrupt per frame!? MCFG_GFXDECODE_ADD("gfxdecode", "palette", meadows) MCFG_PALETTE_ADD_MONOCHROME("palette") diff --git a/src/mame/drivers/mermaid.cpp b/src/mame/drivers/mermaid.cpp index fa38156f880..b186017ea58 100644 --- a/src/mame/drivers/mermaid.cpp +++ b/src/mame/drivers/mermaid.cpp @@ -420,16 +420,11 @@ WRITE_LINE_MEMBER(mermaid_state::rougien_adpcm_int) } } -INTERRUPT_GEN_MEMBER(mermaid_state::vblank_irq) -{ -} - MACHINE_CONFIG_START(mermaid_state::mermaid) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 4000000) // ??? MCFG_CPU_PROGRAM_MAP(mermaid_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", mermaid_state, vblank_irq) MCFG_DEVICE_ADD("latch1", LS259, 0) MCFG_ADDRESSABLE_LATCH_Q0_OUT_CB(WRITELINE(mermaid_state, ay1_enable_w)) diff --git a/src/mame/drivers/metro.cpp b/src/mame/drivers/metro.cpp index 7874646da6f..7339bb56a01 100644 --- a/src/mame/drivers/metro.cpp +++ b/src/mame/drivers/metro.cpp @@ -209,10 +209,13 @@ void metro_state::device_timer(emu_timer &timer, device_timer_id id, int param, } } -INTERRUPT_GEN_MEMBER(metro_state::metro_vblank_interrupt) +WRITE_LINE_MEMBER(metro_state::metro_vblank_irq) { - m_requested_int[m_vblank_bit] = 1; - update_irq_state(); + if (state) + { + m_requested_int[m_vblank_bit] = 1; + update_irq_state(); + } } INTERRUPT_GEN_MEMBER(metro_state::metro_periodic_interrupt) @@ -241,15 +244,18 @@ TIMER_DEVICE_CALLBACK_MEMBER(metro_state::bangball_scanline) } /* lev 2-7 (lev 1 seems sound related) */ -INTERRUPT_GEN_MEMBER(metro_state::karatour_interrupt) +WRITE_LINE_MEMBER(metro_state::karatour_vblank_irq) { - m_requested_int[m_vblank_bit] = 1; + if (state) + { + m_requested_int[m_vblank_bit] = 1; - /* write to scroll registers, the duration is a guess */ - m_karatour_irq_timer->adjust(attotime::from_usec(2500)); - m_requested_int[5] = 1; + /* write to scroll registers, the duration is a guess */ + m_karatour_irq_timer->adjust(attotime::from_usec(2500)); + m_requested_int[5] = 1; - update_irq_state(); + update_irq_state(); + } } WRITE16_MEMBER(metro_state::mouja_irq_timer_ctrl_w) @@ -259,12 +265,15 @@ WRITE16_MEMBER(metro_state::mouja_irq_timer_ctrl_w) m_mouja_irq_timer->adjust(attotime::zero, 0, attotime::from_hz(freq)); } -INTERRUPT_GEN_MEMBER(metro_state::puzzlet_interrupt) +WRITE_LINE_MEMBER(metro_state::puzzlet_vblank_irq) { - m_requested_int[m_vblank_bit] = 1; - m_requested_int[5] = 1; + if (state) + { + m_requested_int[m_vblank_bit] = 1; + m_requested_int[5] = 1; - update_irq_state(); + update_irq_state(); + } } /*************************************************************************** @@ -3140,7 +3149,6 @@ MACHINE_CONFIG_START(metro_state::msgogo) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 16_MHz_XTAL) MCFG_CPU_PROGRAM_MAP(msgogo_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", metro_state, metro_vblank_interrupt) // timing is off, shaking sprites in intro MCFG_CPU_PERIODIC_INT_DRIVER(metro_state, metro_periodic_interrupt, 60) // ? /* video hardware */ @@ -3148,6 +3156,9 @@ MACHINE_CONFIG_START(metro_state::msgogo) MCFG_DEVICE_MODIFY("vdp2") MCFG_I4100_TILEMAP_XOFFSETS(-2,-2,-2) + MCFG_DEVICE_MODIFY("screen") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(metro_state, metro_vblank_irq)) // timing is off, shaking sprites in intro + /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") @@ -3161,42 +3172,46 @@ MACHINE_CONFIG_START(metro_state::balcube) msgogo(config); MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(balcube_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", metro_state, metro_vblank_interrupt) MCFG_CPU_PERIODIC_INT_DRIVER(metro_state, metro_periodic_interrupt, 8*60) // ? + + MCFG_DEVICE_MODIFY("screen") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(metro_state, metro_vblank_irq)) MACHINE_CONFIG_END MACHINE_CONFIG_START(metro_state::daitoa) msgogo(config); MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(daitoa_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", metro_state, metro_vblank_interrupt) MCFG_CPU_PERIODIC_INT_DRIVER(metro_state, metro_periodic_interrupt, 8*60) // ? + + MCFG_DEVICE_MODIFY("screen") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(metro_state, metro_vblank_irq)) MACHINE_CONFIG_END MACHINE_CONFIG_START(metro_state::bangball) msgogo(config); MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(bangball_map) - MCFG_CPU_VBLANK_INT_REMOVE() MCFG_CPU_PERIODIC_INT_REMOVE() MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", metro_state, bangball_scanline, "screen", 0, 1) // doesn't like 58.2 Hz MCFG_DEVICE_MODIFY("screen") MCFG_SCREEN_REFRESH_RATE(60) + MCFG_SCREEN_VBLANK_CALLBACK(NOOP) MACHINE_CONFIG_END MACHINE_CONFIG_START(metro_state::batlbubl) msgogo(config); MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(batlbubl_map) - MCFG_CPU_VBLANK_INT_REMOVE() MCFG_CPU_PERIODIC_INT_REMOVE() MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", metro_state, bangball_scanline, "screen", 0, 1) // doesn't like 58.2 Hz MCFG_DEVICE_MODIFY("screen") MCFG_SCREEN_REFRESH_RATE(60) + MCFG_SCREEN_VBLANK_CALLBACK(NOOP) MACHINE_CONFIG_END @@ -3226,7 +3241,6 @@ MACHINE_CONFIG_START(metro_state::daitorid) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 32_MHz_XTAL/2) MCFG_CPU_PROGRAM_MAP(daitorid_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", metro_state, metro_vblank_interrupt) MCFG_CPU_PERIODIC_INT_DRIVER(metro_state, metro_periodic_interrupt, 8*60) // ? daitorid_upd7810_sound(config); @@ -3236,6 +3250,9 @@ MACHINE_CONFIG_START(metro_state::daitorid) MCFG_DEVICE_MODIFY("vdp2") MCFG_I4100_TILEMAP_XOFFSETS(-2,-2,-2) + MCFG_DEVICE_MODIFY("screen") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(metro_state, metro_vblank_irq)) + /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") @@ -3253,12 +3270,12 @@ MACHINE_CONFIG_START(metro_state::puzzli) daitorid(config); MCFG_CPU_MODIFY("maincpu") - MCFG_CPU_VBLANK_INT_REMOVE() MCFG_CPU_PERIODIC_INT_REMOVE() MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", metro_state, bangball_scanline, "screen", 0, 1) MCFG_DEVICE_MODIFY("screen") MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_SCANLINE) + MCFG_SCREEN_VBLANK_CALLBACK(NOOP) MACHINE_CONFIG_END MACHINE_CONFIG_START(metro_state::dharma) @@ -3266,7 +3283,6 @@ MACHINE_CONFIG_START(metro_state::dharma) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 24_MHz_XTAL/2) MCFG_CPU_PROGRAM_MAP(dharma_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", metro_state, metro_vblank_interrupt) MCFG_CPU_PERIODIC_INT_DRIVER(metro_state, metro_periodic_interrupt, 8*60) // ? metro_upd7810_sound(config); @@ -3274,6 +3290,9 @@ MACHINE_CONFIG_START(metro_state::dharma) /* video hardware */ i4220_config(config); + MCFG_DEVICE_MODIFY("screen") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(metro_state, metro_vblank_irq)) + /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") @@ -3291,7 +3310,6 @@ MACHINE_CONFIG_START(metro_state::karatour) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 24_MHz_XTAL/2) MCFG_CPU_PROGRAM_MAP(karatour_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", metro_state, karatour_interrupt) MCFG_CPU_PERIODIC_INT_DRIVER(metro_state, metro_periodic_interrupt, 8*60) // ? metro_upd7810_sound(config); @@ -3299,6 +3317,9 @@ MACHINE_CONFIG_START(metro_state::karatour) /* video hardware */ i4100_config(config); + MCFG_DEVICE_MODIFY("screen") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(metro_state, karatour_vblank_irq)) + /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") @@ -3317,7 +3338,6 @@ MACHINE_CONFIG_START(metro_state::sankokushi) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 24_MHz_XTAL/2) MCFG_CPU_PROGRAM_MAP(kokushi_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", metro_state, karatour_interrupt) MCFG_CPU_PERIODIC_INT_DRIVER(metro_state, metro_periodic_interrupt, 8*60) // ? metro_upd7810_sound(config); @@ -3325,6 +3345,9 @@ MACHINE_CONFIG_START(metro_state::sankokushi) /* video hardware */ i4220_config_320x240(config); + MCFG_DEVICE_MODIFY("screen") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(metro_state, karatour_vblank_irq)) + /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") @@ -3343,7 +3366,6 @@ MACHINE_CONFIG_START(metro_state::lastfort) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 24_MHz_XTAL/2) MCFG_CPU_PROGRAM_MAP(lastfort_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", metro_state, metro_vblank_interrupt) MCFG_CPU_PERIODIC_INT_DRIVER(metro_state, metro_periodic_interrupt, 8*60) // ? metro_upd7810_sound(config); @@ -3351,6 +3373,9 @@ MACHINE_CONFIG_START(metro_state::lastfort) /* video hardware */ i4100_config_360x224(config); + MCFG_DEVICE_MODIFY("screen") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(metro_state, metro_vblank_irq)) + /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") @@ -3368,13 +3393,15 @@ MACHINE_CONFIG_START(metro_state::lastforg) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 24_MHz_XTAL/2) MCFG_CPU_PROGRAM_MAP(lastforg_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", metro_state, karatour_interrupt) MCFG_CPU_PERIODIC_INT_DRIVER(metro_state, metro_periodic_interrupt, 8*60) // ? metro_upd7810_sound(config); i4100_config_360x224(config); + MCFG_DEVICE_MODIFY("screen") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(metro_state, karatour_vblank_irq)) + /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") @@ -3392,12 +3419,14 @@ MACHINE_CONFIG_START(metro_state::dokyusei) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 16_MHz_XTAL) MCFG_CPU_PROGRAM_MAP(dokyusei_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", metro_state, metro_vblank_interrupt) MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(metro_state,metro_irq_callback) /* video hardware */ i4300_config(config); + MCFG_DEVICE_MODIFY("screen") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(metro_state, metro_vblank_irq)) + /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") @@ -3413,7 +3442,6 @@ MACHINE_CONFIG_START(metro_state::dokyusp) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 32_MHz_XTAL/2) MCFG_CPU_PROGRAM_MAP(dokyusp_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", metro_state, metro_vblank_interrupt) MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(metro_state,metro_irq_callback) MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") @@ -3423,6 +3451,9 @@ MACHINE_CONFIG_START(metro_state::dokyusp) /* video hardware */ i4300_config_384x224(config); + MCFG_DEVICE_MODIFY("screen") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(metro_state, metro_vblank_irq)) + /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") @@ -3439,7 +3470,6 @@ MACHINE_CONFIG_START(metro_state::gakusai) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 16000000) /* 26.6660MHz/2?, OSCs listed are 26.6660MHz & 3.579545MHz */ MCFG_CPU_PROGRAM_MAP(gakusai_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", metro_state, metro_vblank_interrupt) MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(metro_state,metro_irq_callback) MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") @@ -3449,6 +3479,9 @@ MACHINE_CONFIG_START(metro_state::gakusai) /* video hardware */ i4300_config_320x240(config); + MCFG_DEVICE_MODIFY("screen") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(metro_state, metro_vblank_irq)) + /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") @@ -3465,7 +3498,7 @@ MACHINE_CONFIG_START(metro_state::gakusai2) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 16000000) /* 26.6660MHz/2?, OSCs listed are 26.6660MHz & 3.579545MHz */ MCFG_CPU_PROGRAM_MAP(gakusai2_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", metro_state, metro_vblank_interrupt) + MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(metro_state,metro_irq_callback) MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") @@ -3475,6 +3508,9 @@ MACHINE_CONFIG_START(metro_state::gakusai2) /* video hardware */ i4300_config_320x240(config); + MCFG_DEVICE_MODIFY("screen") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(metro_state, metro_vblank_irq)) + /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") @@ -3491,7 +3527,6 @@ MACHINE_CONFIG_START(metro_state::pangpoms) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 24_MHz_XTAL/2) MCFG_CPU_PROGRAM_MAP(pangpoms_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", metro_state, metro_vblank_interrupt) MCFG_CPU_PERIODIC_INT_DRIVER(metro_state, metro_periodic_interrupt, 8*60) // ? metro_upd7810_sound(config); @@ -3499,6 +3534,9 @@ MACHINE_CONFIG_START(metro_state::pangpoms) /* video hardware */ i4100_config_360x224(config); + MCFG_DEVICE_MODIFY("screen") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(metro_state, metro_vblank_irq)) + /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") @@ -3517,7 +3555,6 @@ MACHINE_CONFIG_START(metro_state::poitto) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 24_MHz_XTAL/2) MCFG_CPU_PROGRAM_MAP(poitto_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", metro_state, metro_vblank_interrupt) MCFG_CPU_PERIODIC_INT_DRIVER(metro_state, metro_periodic_interrupt, 8*60) // ? metro_upd7810_sound(config); @@ -3525,6 +3562,9 @@ MACHINE_CONFIG_START(metro_state::poitto) /* video hardware */ i4100_config_360x224(config); + MCFG_DEVICE_MODIFY("screen") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(metro_state, metro_vblank_irq)) + /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") @@ -3543,7 +3583,6 @@ MACHINE_CONFIG_START(metro_state::pururun) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 24_MHz_XTAL/2) /* Not confirmed */ MCFG_CPU_PROGRAM_MAP(pururun_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", metro_state, metro_vblank_interrupt) MCFG_CPU_PERIODIC_INT_DRIVER(metro_state, metro_periodic_interrupt, 8*60) // ? daitorid_upd7810_sound(config); @@ -3551,6 +3590,9 @@ MACHINE_CONFIG_START(metro_state::pururun) /* video hardware */ i4220_config(config); + MCFG_DEVICE_MODIFY("screen") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(metro_state, metro_vblank_irq)) + /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") @@ -3570,13 +3612,14 @@ MACHINE_CONFIG_START(metro_state::skyalert) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 24_MHz_XTAL/2) MCFG_CPU_PROGRAM_MAP(skyalert_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", metro_state, metro_vblank_interrupt) MCFG_CPU_PERIODIC_INT_DRIVER(metro_state, metro_periodic_interrupt, 8*60) // ? metro_upd7810_sound(config); i4100_config_360x224(config); + MCFG_DEVICE_MODIFY("screen") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(metro_state, metro_vblank_irq)) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") @@ -3596,7 +3639,6 @@ MACHINE_CONFIG_START(metro_state::toride2g) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 24_MHz_XTAL/2) MCFG_CPU_PROGRAM_MAP(toride2g_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", metro_state, metro_vblank_interrupt) MCFG_CPU_PERIODIC_INT_DRIVER(metro_state, metro_periodic_interrupt, 8*60) // ? metro_upd7810_sound(config); @@ -3604,6 +3646,9 @@ MACHINE_CONFIG_START(metro_state::toride2g) /* video hardware */ i4220_config(config); + MCFG_DEVICE_MODIFY("screen") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(metro_state, metro_vblank_irq)) + /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") @@ -3622,7 +3667,6 @@ MACHINE_CONFIG_START(metro_state::mouja) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 16_MHz_XTAL) MCFG_CPU_PROGRAM_MAP(mouja_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", metro_state, metro_vblank_interrupt) MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(metro_state,metro_irq_callback) MCFG_WATCHDOG_ADD("watchdog") @@ -3630,6 +3674,9 @@ MACHINE_CONFIG_START(metro_state::mouja) /* video hardware */ i4300_config(config); + MCFG_DEVICE_MODIFY("screen") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(metro_state, metro_vblank_irq)) + /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_OKIM6295_ADD("oki", 16_MHz_XTAL/1024*132, PIN7_HIGH) // clock frequency & pin 7 not verified @@ -3646,12 +3693,14 @@ MACHINE_CONFIG_START(metro_state::vmetal) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 16_MHz_XTAL) MCFG_CPU_PROGRAM_MAP(vmetal_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", metro_state, metro_vblank_interrupt) MCFG_CPU_PERIODIC_INT_DRIVER(metro_state, metro_periodic_interrupt, 8*60) // ? /* video hardware */ i4220_config_304x224(config); + MCFG_DEVICE_MODIFY("screen") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(metro_state, metro_vblank_irq)) + MCFG_DEVICE_MODIFY("vdp2") MCFG_I4100_TILEMAP_XOFFSETS(-16,-16,-16) MCFG_I4100_TILEMAP_YOFFSETS(-16,-16,-16) @@ -3679,7 +3728,6 @@ MACHINE_CONFIG_START(metro_state::blzntrnd) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, 16_MHz_XTAL) MCFG_CPU_PROGRAM_MAP(blzntrnd_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", metro_state, karatour_interrupt) MCFG_CPU_PERIODIC_INT_DRIVER(metro_state, metro_periodic_interrupt, 8*60) // ? MCFG_CPU_ADD("audiocpu", Z80, 16_MHz_XTAL/2) @@ -3698,6 +3746,8 @@ MACHINE_CONFIG_START(metro_state::blzntrnd) MCFG_SCREEN_VISIBLE_AREA(0, 304-1, 0, 224-1) MCFG_SCREEN_UPDATE_DRIVER(metro_state, screen_update_psac_vdp2_mix) MCFG_SCREEN_PALETTE(":vdp2:palette") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(metro_state, karatour_vblank_irq)) + MCFG_VIDEO_START_OVERRIDE(metro_state,blzntrnd) MCFG_GFXDECODE_ADD("gfxdecode", ":vdp2:palette", blzntrnd) @@ -3750,7 +3800,6 @@ MACHINE_CONFIG_START(metro_state::puzzlet) MCFG_CPU_ADD("maincpu", H83007, 20_MHz_XTAL) // H8/3007 - Hitachi HD6413007F20 CPU. Clock 20MHz MCFG_CPU_PROGRAM_MAP(puzzlet_map) MCFG_CPU_IO_MAP(puzzlet_io_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", metro_state, puzzlet_interrupt) /* Coins/service */ MCFG_PUZZLET_IO_ADD("coins") @@ -3763,6 +3812,9 @@ MACHINE_CONFIG_START(metro_state::puzzlet) // TODO: looks like game is running in i4220 compatibilty mode, $778000 seems to be an id for the chip? i4220_config(config); + MCFG_DEVICE_MODIFY("screen") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(metro_state, puzzlet_vblank_irq)) + /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") diff --git a/src/mame/drivers/pcktgal.cpp b/src/mame/drivers/pcktgal.cpp index 43d770c5b56..ac950e8570a 100644 --- a/src/mame/drivers/pcktgal.cpp +++ b/src/mame/drivers/pcktgal.cpp @@ -228,7 +228,6 @@ MACHINE_CONFIG_START(pcktgal_state::pcktgal) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, 2000000) MCFG_CPU_PROGRAM_MAP(pcktgal_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", pcktgal_state, nmi_line_pulse) MCFG_CPU_ADD("audiocpu", DECO_222, 1500000) MCFG_CPU_PROGRAM_MAP(pcktgal_sound_map) @@ -243,6 +242,7 @@ MACHINE_CONFIG_START(pcktgal_state::pcktgal) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(pcktgal_state, screen_update_pcktgal) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", pcktgal) MCFG_PALETTE_ADD("palette", 512) diff --git a/src/mame/drivers/pipeline.cpp b/src/mame/drivers/pipeline.cpp index e35a6e458f5..9b4981e7089 100644 --- a/src/mame/drivers/pipeline.cpp +++ b/src/mame/drivers/pipeline.cpp @@ -361,7 +361,6 @@ MACHINE_CONFIG_START(pipeline_state::pipeline) MCFG_CPU_ADD("maincpu", Z80, 7372800/2) MCFG_CPU_PROGRAM_MAP(cpu0_mem) - MCFG_CPU_VBLANK_INT_DRIVER("screen", pipeline_state, nmi_line_pulse) MCFG_CPU_ADD("audiocpu", Z80, 7372800/2) MCFG_Z80_DAISY_CHAIN(daisy_chain_sound) @@ -395,6 +394,7 @@ MACHINE_CONFIG_START(pipeline_state::pipeline) MCFG_SCREEN_VISIBLE_AREA(0, 319, 16, 239) MCFG_SCREEN_UPDATE_DRIVER(pipeline_state, screen_update) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", pipeline) diff --git a/src/mame/drivers/pokechmp.cpp b/src/mame/drivers/pokechmp.cpp index 29fc48bd6a9..31bcb6c2e5e 100644 --- a/src/mame/drivers/pokechmp.cpp +++ b/src/mame/drivers/pokechmp.cpp @@ -219,16 +219,21 @@ OKI M6295 (an AD65 on this board, note pin 7 is low): 1.5mhz */ +WRITE_LINE_MEMBER(pokechmp_state::sound_irq) +{ + // VBLANK is probably not the source of this interrupt + if (state) + m_audiocpu->set_input_line(0, HOLD_LINE); +} + MACHINE_CONFIG_START(pokechmp_state::pokechmp) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, XTAL(4'000'000)/4) MCFG_CPU_PROGRAM_MAP(pokechmp_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", pokechmp_state, nmi_line_pulse) MCFG_CPU_ADD("audiocpu", M6502, XTAL(4'000'000)/4) MCFG_CPU_PROGRAM_MAP(pokechmp_sound_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", pokechmp_state, irq0_line_hold) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) @@ -238,6 +243,8 @@ MACHINE_CONFIG_START(pokechmp_state::pokechmp) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(pokechmp_state, screen_update_pokechmp) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI)) + MCFG_DEVCB_CHAIN_OUTPUT(WRITELINE(pokechmp_state, sound_irq)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", pokechmp) MCFG_PALETTE_ADD("palette", 0x400) diff --git a/src/mame/drivers/punchout.cpp b/src/mame/drivers/punchout.cpp index 26418803094..20da4fdba1a 100644 --- a/src/mame/drivers/punchout.cpp +++ b/src/mame/drivers/punchout.cpp @@ -138,6 +138,8 @@ DIP locations verified for: WRITE_LINE_MEMBER(punchout_state::nmi_mask_w) { m_nmi_mask = state; + if (!m_nmi_mask) + m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE); } void punchout_state::punchout_map(address_map &map) @@ -607,10 +609,10 @@ static GFXDECODE_START( armwrest ) GFXDECODE_END -INTERRUPT_GEN_MEMBER(punchout_state::vblank_irq) +WRITE_LINE_MEMBER(punchout_state::vblank_irq) { - if (m_nmi_mask) - device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE); + if (state && m_nmi_mask) + m_maincpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE); } @@ -626,11 +628,9 @@ MACHINE_CONFIG_START(punchout_state::punchout) MCFG_CPU_ADD("maincpu", Z80, XTAL(8'000'000)/2) MCFG_CPU_PROGRAM_MAP(punchout_map) MCFG_CPU_IO_MAP(punchout_io_map) - MCFG_CPU_VBLANK_INT_DRIVER("top", punchout_state, vblank_irq) MCFG_CPU_ADD("audiocpu", N2A03, NTSC_APU_CLOCK) MCFG_CPU_PROGRAM_MAP(punchout_sound_map) - MCFG_CPU_VBLANK_INT_DRIVER("top", punchout_state, nmi_line_pulse) MCFG_NVRAM_ADD_0FILL("nvram") @@ -656,6 +656,8 @@ MACHINE_CONFIG_START(punchout_state::punchout) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(punchout_state, screen_update_punchout_top) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(punchout_state, vblank_irq)) + MCFG_DEVCB_CHAIN_OUTPUT(INPUTLINE("audiocpu", INPUT_LINE_NMI)) MCFG_SCREEN_ADD("bottom", RASTER) MCFG_SCREEN_REFRESH_RATE(60) diff --git a/src/mame/drivers/rastersp.cpp b/src/mame/drivers/rastersp.cpp index 32362424b42..f792400a4e7 100644 --- a/src/mame/drivers/rastersp.cpp +++ b/src/mame/drivers/rastersp.cpp @@ -129,7 +129,7 @@ public: TIMER_DEVICE_CALLBACK_MEMBER(tms_timer1); TIMER_DEVICE_CALLBACK_MEMBER(tms_tx_timer); - INTERRUPT_GEN_MEMBER(vblank_irq); + DECLARE_WRITE_LINE_MEMBER(vblank_irq); std::unique_ptr m_nvram8; uint8_t m_io_reg; @@ -417,9 +417,10 @@ WRITE_LINE_MEMBER( rastersp_state::scsi_irq ) } -INTERRUPT_GEN_MEMBER( rastersp_state::vblank_irq ) +WRITE_LINE_MEMBER( rastersp_state::vblank_irq ) { - update_irq(IRQ_VBLANK, ASSERT_LINE); + if (state) + update_irq(IRQ_VBLANK, ASSERT_LINE); } @@ -863,7 +864,6 @@ MACHINE_CONFIG_START(rastersp_state::rastersp) MCFG_CPU_ADD("maincpu", I486, 33330000) MCFG_CPU_PROGRAM_MAP(cpu_map) MCFG_CPU_IO_MAP(io_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", rastersp_state, vblank_irq) MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(rastersp_state,irq_callback) MCFG_CPU_ADD("dsp", TMS32031, 33330000) @@ -889,6 +889,7 @@ MACHINE_CONFIG_START(rastersp_state::rastersp) MCFG_SCREEN_REFRESH_RATE(50) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */ MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(rastersp_state, vblank_irq)) MCFG_PALETTE_ADD_RRRRRGGGGGGBBBBB("palette") diff --git a/src/mame/drivers/realbrk.cpp b/src/mame/drivers/realbrk.cpp index 033e2d41088..1ae3a4a4523 100644 --- a/src/mame/drivers/realbrk.cpp +++ b/src/mame/drivers/realbrk.cpp @@ -753,10 +753,11 @@ GFXDECODE_END Billiard Academy Real Break ***************************************************************************/ -INTERRUPT_GEN_MEMBER(realbrk_state::interrupt) +WRITE_LINE_MEMBER(realbrk_state::vblank_irq) { /* VBlank is connected to INT1 (external interrupts pin 1) */ - m_tmp68301->external_interrupt_1(); + if (state) + m_tmp68301->external_interrupt_1(); } MACHINE_CONFIG_START(realbrk_state::realbrk) @@ -764,7 +765,6 @@ MACHINE_CONFIG_START(realbrk_state::realbrk) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",M68000, XTAL(32'000'000) / 2) /* !! TMP68301 !! */ MCFG_CPU_PROGRAM_MAP(realbrk_mem) - MCFG_CPU_VBLANK_INT_DRIVER("screen", realbrk_state, interrupt) MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("tmp68301",tmp68301_device,irq_callback) MCFG_DEVICE_ADD("tmp68301", TMP68301, 0) @@ -779,6 +779,7 @@ MACHINE_CONFIG_START(realbrk_state::realbrk) MCFG_SCREEN_VISIBLE_AREA(0, 0x140-1, 0, 0xe0-1) MCFG_SCREEN_UPDATE_DRIVER(realbrk_state, screen_update) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(realbrk_state, vblank_irq)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", realbrk) MCFG_PALETTE_ADD("palette", 0x8000) diff --git a/src/mame/drivers/roul.cpp b/src/mame/drivers/roul.cpp index 5f6d031b23b..208f5340e9b 100644 --- a/src/mame/drivers/roul.cpp +++ b/src/mame/drivers/roul.cpp @@ -308,7 +308,6 @@ MACHINE_CONFIG_START(roul_state::roul) MCFG_CPU_ADD("maincpu", Z80, 4000000) MCFG_CPU_PROGRAM_MAP(roul_map) MCFG_CPU_IO_MAP(roul_cpu_io_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", roul_state, nmi_line_pulse) MCFG_CPU_ADD("soundcpu", Z80, 4000000) MCFG_CPU_PROGRAM_MAP(sound_map) @@ -325,6 +324,7 @@ MACHINE_CONFIG_START(roul_state::roul) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1) MCFG_SCREEN_UPDATE_DRIVER(roul_state, screen_update) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI)) MCFG_PALETTE_ADD("palette", 0x100) MCFG_PALETTE_INIT_OWNER(roul_state, roul) diff --git a/src/mame/drivers/sidepckt.cpp b/src/mame/drivers/sidepckt.cpp index aa174661cc2..0599cf7bc8a 100644 --- a/src/mame/drivers/sidepckt.cpp +++ b/src/mame/drivers/sidepckt.cpp @@ -374,7 +374,6 @@ MACHINE_CONFIG_START(sidepckt_state::sidepckt) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", MC6809E, 2000000) /* MC68B09EP, 2 MHz */ MCFG_CPU_PROGRAM_MAP(sidepckt_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", sidepckt_state, nmi_line_pulse) MCFG_CPU_ADD("audiocpu", M6502, 1500000) /* 1.5 MHz */ MCFG_CPU_PROGRAM_MAP(sound_map) @@ -387,6 +386,7 @@ MACHINE_CONFIG_START(sidepckt_state::sidepckt) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(sidepckt_state, screen_update) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", sidepckt) MCFG_PALETTE_ADD("palette", 256) diff --git a/src/mame/drivers/stuntair.cpp b/src/mame/drivers/stuntair.cpp index 01655667c8c..53bbdaf1fcc 100644 --- a/src/mame/drivers/stuntair.cpp +++ b/src/mame/drivers/stuntair.cpp @@ -136,7 +136,7 @@ public: DECLARE_WRITE8_MEMBER(stuntair_coin_w); DECLARE_WRITE8_MEMBER(stuntair_sound_w); DECLARE_WRITE8_MEMBER(ay8910_portb_w); - INTERRUPT_GEN_MEMBER(stuntair_irq); + DECLARE_WRITE_LINE_MEMBER(stuntair_irq); virtual void machine_start() override; virtual void machine_reset() override; virtual void video_start() override; @@ -490,9 +490,9 @@ WRITE8_MEMBER(stuntair_state::ay8910_portb_w) ***************************************************************************/ -INTERRUPT_GEN_MEMBER(stuntair_state::stuntair_irq) +WRITE_LINE_MEMBER(stuntair_state::stuntair_irq) { - if(m_nmi_enable) + if (state && m_nmi_enable) m_maincpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE); } @@ -518,7 +518,6 @@ MACHINE_CONFIG_START(stuntair_state::stuntair) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL(18'432'000)/6) /* 3 MHz? */ MCFG_CPU_PROGRAM_MAP(stuntair_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", stuntair_state, stuntair_irq) MCFG_CPU_ADD("audiocpu", Z80, XTAL(18'432'000)/6) /* 3 MHz? */ MCFG_CPU_PROGRAM_MAP(stuntair_sound_map) @@ -547,6 +546,7 @@ MACHINE_CONFIG_START(stuntair_state::stuntair) MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 256-16-1) MCFG_SCREEN_UPDATE_DRIVER(stuntair_state, screen_update_stuntair) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(stuntair_state, stuntair_irq)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", stuntair) MCFG_PALETTE_ADD("palette", 0x100+2) diff --git a/src/mame/drivers/sub.cpp b/src/mame/drivers/sub.cpp index 7f98040e5a8..697ec8febc5 100644 --- a/src/mame/drivers/sub.cpp +++ b/src/mame/drivers/sub.cpp @@ -157,7 +157,7 @@ public: DECLARE_PALETTE_INIT(sub); uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - INTERRUPT_GEN_MEMBER(main_irq); + DECLARE_WRITE_LINE_MEMBER(main_irq); INTERRUPT_GEN_MEMBER(sound_irq); void sub(machine_config &config); void subm_io(address_map &map); @@ -449,9 +449,9 @@ PALETTE_INIT_MEMBER(sub_state, sub) } -INTERRUPT_GEN_MEMBER(sub_state::main_irq) +WRITE_LINE_MEMBER(sub_state::main_irq) { - if (m_int_en) + if (state && m_int_en) m_maincpu->set_input_line(0, ASSERT_LINE); } @@ -467,7 +467,6 @@ MACHINE_CONFIG_START(sub_state::sub) MCFG_CPU_ADD("maincpu", Z80,MASTER_CLOCK/6) /* ? MHz */ MCFG_CPU_PROGRAM_MAP(subm_map) MCFG_CPU_IO_MAP(subm_io) - MCFG_CPU_VBLANK_INT_DRIVER("screen", sub_state, main_irq) MCFG_CPU_ADD("soundcpu", Z80,MASTER_CLOCK/6) /* ? MHz */ MCFG_CPU_PROGRAM_MAP(subm_sound_map) @@ -490,6 +489,7 @@ MACHINE_CONFIG_START(sub_state::sub) MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 256-16-1) MCFG_SCREEN_UPDATE_DRIVER(sub_state, screen_update) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(sub_state, main_irq)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", sub) MCFG_PALETTE_ADD("palette", 0x400) diff --git a/src/mame/drivers/tsamurai.cpp b/src/mame/drivers/tsamurai.cpp index 99ac701b6ca..c45711f438d 100644 --- a/src/mame/drivers/tsamurai.cpp +++ b/src/mame/drivers/tsamurai.cpp @@ -79,9 +79,10 @@ WRITE_LINE_MEMBER(tsamurai_state::nmi_enable_w) m_nmi_enabled = state; } -INTERRUPT_GEN_MEMBER(tsamurai_state::interrupt) +WRITE_LINE_MEMBER(tsamurai_state::vblank_irq) { - if (m_nmi_enabled) device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE); + if (state && m_nmi_enabled) + m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); } READ8_MEMBER(tsamurai_state::tsamurai_unknown_d803_r) @@ -721,7 +722,6 @@ MACHINE_CONFIG_START(tsamurai_state::tsamurai) MCFG_CPU_ADD("maincpu", Z80, XTAL(24'000'000)/8) MCFG_CPU_PROGRAM_MAP(main_map) MCFG_CPU_IO_MAP(z80_io_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", tsamurai_state, interrupt) MCFG_CPU_ADD("audiocpu", Z80, XTAL(24'000'000)/8) MCFG_CPU_PROGRAM_MAP(sound1_map) @@ -746,6 +746,7 @@ MACHINE_CONFIG_START(tsamurai_state::tsamurai) MCFG_SCREEN_VISIBLE_AREA(0, 255, 16, 255-16) MCFG_SCREEN_UPDATE_DRIVER(tsamurai_state, screen_update) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(tsamurai_state, vblank_irq)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", tsamurai) MCFG_PALETTE_ADD_RRRRGGGGBBBB_PROMS("palette", "proms", 256) @@ -770,7 +771,6 @@ MACHINE_CONFIG_START(tsamurai_state::vsgongf) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL(24'000'000)/8) MCFG_CPU_PROGRAM_MAP(vsgongf_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", tsamurai_state, interrupt) MCFG_CPU_ADD("audiocpu", Z80, XTAL(24'000'000)/8) MCFG_CPU_PROGRAM_MAP(sound_vsgongf_map) @@ -794,6 +794,7 @@ MACHINE_CONFIG_START(tsamurai_state::vsgongf) MCFG_SCREEN_VISIBLE_AREA(0, 255, 16, 255-16) MCFG_SCREEN_UPDATE_DRIVER(tsamurai_state, screen_update_vsgongf) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(tsamurai_state, vblank_irq)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", tsamurai) MCFG_PALETTE_ADD_RRRRGGGGBBBB_PROMS("palette", "proms", 256) @@ -819,7 +820,6 @@ MACHINE_CONFIG_START(tsamurai_state::m660) MCFG_CPU_ADD("maincpu", Z80, XTAL(24'000'000)/8) MCFG_CPU_PROGRAM_MAP(m660_map) MCFG_CPU_IO_MAP(z80_m660_io_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", tsamurai_state, interrupt) MCFG_CPU_ADD("audiocpu", Z80, XTAL(24'000'000)/8) MCFG_CPU_PROGRAM_MAP(sound1_m660_map) @@ -830,7 +830,6 @@ MACHINE_CONFIG_START(tsamurai_state::m660) MCFG_CPU_ADD("audio3", Z80, XTAL(24'000'000)/8) MCFG_CPU_PROGRAM_MAP(sound3_m660_map) MCFG_CPU_IO_MAP(sound3_m660_io_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", tsamurai_state, nmi_line_pulse) MCFG_MACHINE_START_OVERRIDE(tsamurai_state,m660) @@ -850,6 +849,8 @@ MACHINE_CONFIG_START(tsamurai_state::m660) MCFG_SCREEN_VISIBLE_AREA(0, 255, 16, 255-16) MCFG_SCREEN_UPDATE_DRIVER(tsamurai_state, screen_update) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(tsamurai_state, vblank_irq)) + MCFG_DEVCB_CHAIN_OUTPUT(INPUTLINE("audio3", INPUT_LINE_NMI)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", tsamurai) MCFG_PALETTE_ADD_RRRRGGGGBBBB_PROMS("palette", "proms", 256) diff --git a/src/mame/drivers/tubep.cpp b/src/mame/drivers/tubep.cpp index 5f63d00b9c2..287148884b5 100644 --- a/src/mame/drivers/tubep.cpp +++ b/src/mame/drivers/tubep.cpp @@ -888,7 +888,9 @@ MACHINE_CONFIG_START(tubep_state::tubepb) MCFG_CPU_REPLACE("mcu", M6802,6000000) /* ? MHz Xtal */ MCFG_CPU_PROGRAM_MAP(nsc_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", tubep_state, nmi_line_pulse) + + //MCFG_SCREEN_MODIFY("screen") + //MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("mcu", INPUT_LINE_NMI)) MACHINE_CONFIG_END diff --git a/src/mame/includes/commando.h b/src/mame/includes/commando.h index d8e35c8d72e..19d29a8fdf7 100644 --- a/src/mame/includes/commando.h +++ b/src/mame/includes/commando.h @@ -54,7 +54,7 @@ public: virtual void machine_reset() override; virtual void video_start() override; uint32_t screen_update_commando(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - INTERRUPT_GEN_MEMBER(commando_interrupt); + DECLARE_WRITE_LINE_MEMBER(vblank_irq); void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect ); required_device m_maincpu; required_device m_gfxdecode; diff --git a/src/mame/includes/fantland.h b/src/mame/includes/fantland.h index 0dbf360ebf2..8ca9c568f4a 100644 --- a/src/mame/includes/fantland.h +++ b/src/mame/includes/fantland.h @@ -69,7 +69,7 @@ public: DECLARE_MACHINE_START(borntofi); DECLARE_MACHINE_RESET(borntofi); uint32_t screen_update_fantland(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - INTERRUPT_GEN_MEMBER(fantland_irq); + DECLARE_WRITE_LINE_MEMBER(fantland_irq); INTERRUPT_GEN_MEMBER(fantland_sound_irq); void draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect); DECLARE_WRITE_LINE_MEMBER(borntofi_adpcm_int_0); diff --git a/src/mame/includes/goldstar.h b/src/mame/includes/goldstar.h index d143c94e269..b3b473bf026 100644 --- a/src/mame/includes/goldstar.h +++ b/src/mame/includes/goldstar.h @@ -217,7 +217,7 @@ public: uint32_t screen_update_magical(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_mbstar(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - INTERRUPT_GEN_MEMBER(masked_irq); + DECLARE_WRITE_LINE_MEMBER(masked_irq); void bingowng(machine_config &config); void flaming7(machine_config &config); @@ -343,7 +343,7 @@ public: DECLARE_VIDEO_START(unkch); uint32_t screen_update_unkch(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - INTERRUPT_GEN_MEMBER(vblank_irq); + DECLARE_WRITE_LINE_MEMBER(vblank_irq); void megaline(machine_config &config); void unkch(machine_config &config); diff --git a/src/mame/includes/mac.h b/src/mame/includes/mac.h index 7494309d5c8..7713c49d0d5 100644 --- a/src/mame/includes/mac.h +++ b/src/mame/includes/mac.h @@ -526,7 +526,7 @@ public: uint32_t screen_update_macv8(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); uint32_t screen_update_macsonora(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); uint32_t screen_update_macpbwd(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); - INTERRUPT_GEN_MEMBER(mac_rbv_vbl); + DECLARE_WRITE_LINE_MEMBER(mac_rbv_vbl); #ifndef MAC_USE_EMULATED_KBD TIMER_CALLBACK_MEMBER(kbd_clock); TIMER_CALLBACK_MEMBER(inquiry_timeout_func); diff --git a/src/mame/includes/meadows.h b/src/mame/includes/meadows.h index 7d8ebe167df..bd351cc53ac 100644 --- a/src/mame/includes/meadows.h +++ b/src/mame/includes/meadows.h @@ -65,8 +65,8 @@ public: TILE_GET_INFO_MEMBER(get_tile_info); virtual void video_start() override; uint32_t screen_update_meadows(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - INTERRUPT_GEN_MEMBER(meadows_interrupt); - INTERRUPT_GEN_MEMBER(minferno_interrupt); + DECLARE_WRITE_LINE_MEMBER(meadows_vblank_irq); + DECLARE_WRITE_LINE_MEMBER(minferno_vblank_irq); INTERRUPT_GEN_MEMBER(audio_interrupt); void draw_sprites(bitmap_ind16 &bitmap, const rectangle &clip); void meadows_sh_update(); diff --git a/src/mame/includes/mermaid.h b/src/mame/includes/mermaid.h index acaa3f0f5e2..33b2adf1e56 100644 --- a/src/mame/includes/mermaid.h +++ b/src/mame/includes/mermaid.h @@ -98,7 +98,6 @@ public: DECLARE_PALETTE_INIT(rougien); uint32_t screen_update_mermaid(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); DECLARE_WRITE_LINE_MEMBER(screen_vblank_mermaid); - INTERRUPT_GEN_MEMBER(vblank_irq); void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect ); uint8_t collision_check( rectangle& rect ); void collision_update(); diff --git a/src/mame/includes/metro.h b/src/mame/includes/metro.h index f528adcc112..9bff2a92aa4 100644 --- a/src/mame/includes/metro.h +++ b/src/mame/includes/metro.h @@ -101,11 +101,11 @@ public: DECLARE_VIDEO_START(blzntrnd); DECLARE_VIDEO_START(gstrik2); uint32_t screen_update_psac_vdp2_mix(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - INTERRUPT_GEN_MEMBER(metro_vblank_interrupt); + DECLARE_WRITE_LINE_MEMBER(metro_vblank_irq); INTERRUPT_GEN_MEMBER(metro_periodic_interrupt); TIMER_DEVICE_CALLBACK_MEMBER(bangball_scanline); - INTERRUPT_GEN_MEMBER(karatour_interrupt); - INTERRUPT_GEN_MEMBER(puzzlet_interrupt); + DECLARE_WRITE_LINE_MEMBER(karatour_vblank_irq); + DECLARE_WRITE_LINE_MEMBER(puzzlet_vblank_irq); IRQ_CALLBACK_MEMBER(metro_irq_callback); DECLARE_READ_LINE_MEMBER(metro_rxd_r); diff --git a/src/mame/includes/pokechmp.h b/src/mame/includes/pokechmp.h index a8f6c1cb6aa..1f9a5082ea1 100644 --- a/src/mame/includes/pokechmp.h +++ b/src/mame/includes/pokechmp.h @@ -24,6 +24,7 @@ public: DECLARE_WRITE8_MEMBER(pokechmp_sound_w); DECLARE_WRITE8_MEMBER(pokechmp_videoram_w); DECLARE_WRITE8_MEMBER(pokechmp_flipscreen_w); + DECLARE_WRITE_LINE_MEMBER(sound_irq); DECLARE_DRIVER_INIT(pokechmp); TILE_GET_INFO_MEMBER(get_bg_tile_info); virtual void video_start() override; diff --git a/src/mame/includes/punchout.h b/src/mame/includes/punchout.h index 92e05683598..97c1ad01871 100644 --- a/src/mame/includes/punchout.h +++ b/src/mame/includes/punchout.h @@ -56,7 +56,7 @@ public: tilemap_t *m_spr1_tilemap_flipx; tilemap_t *m_spr2_tilemap; - uint8_t m_nmi_mask; + bool m_nmi_mask; DECLARE_WRITE8_MEMBER(punchout_2a03_reset_w); DECLARE_READ8_MEMBER(spunchout_exp_r); DECLARE_WRITE8_MEMBER(spunchout_exp_w); @@ -84,7 +84,7 @@ public: uint32_t screen_update_punchout_bottom(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_armwrest_top(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_armwrest_bottom(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - INTERRUPT_GEN_MEMBER(vblank_irq); + DECLARE_WRITE_LINE_MEMBER(vblank_irq); void draw_big_sprite(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int palette); void armwrest_draw_big_sprite(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int palette); void drawbs2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); diff --git a/src/mame/includes/realbrk.h b/src/mame/includes/realbrk.h index b152e4d12e5..5783fbe0bc2 100644 --- a/src/mame/includes/realbrk.h +++ b/src/mame/includes/realbrk.h @@ -75,7 +75,7 @@ public: void draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect); void dai2kaku_draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect, int layer); - INTERRUPT_GEN_MEMBER(interrupt); + DECLARE_WRITE_LINE_MEMBER(vblank_irq); void pkgnsh(machine_config &config); void dai2kaku(machine_config &config); void realbrk(machine_config &config); diff --git a/src/mame/includes/tsamurai.h b/src/mame/includes/tsamurai.h index 53c482685f3..4390e82e7af 100644 --- a/src/mame/includes/tsamurai.h +++ b/src/mame/includes/tsamurai.h @@ -69,7 +69,7 @@ public: uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_vsgongf(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - INTERRUPT_GEN_MEMBER(interrupt); + DECLARE_WRITE_LINE_MEMBER(vblank_irq); INTERRUPT_GEN_MEMBER(vsgongf_sound_interrupt); void tsamurai(machine_config &config); -- cgit v1.2.3