From 360ff18720764c9c2e4653806c6e778acf4638ea Mon Sep 17 00:00:00 2001 From: Sergey Svishchev Date: Tue, 27 Mar 2018 03:28:29 +0300 Subject: i8214: check pending interrupts when ETLG and INTE lines change (nw) --- src/devices/machine/i8214.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/devices/machine/i8214.cpp b/src/devices/machine/i8214.cpp index c82488fc81c..f496c758453 100644 --- a/src/devices/machine/i8214.cpp +++ b/src/devices/machine/i8214.cpp @@ -204,6 +204,8 @@ WRITE_LINE_MEMBER( i8214_device::etlg_w ) LOG("I8214 ETLG: %u\n", state); m_etlg = state; + + check_interrupt(); } @@ -216,4 +218,6 @@ WRITE_LINE_MEMBER( i8214_device::inte_w ) LOG("I8214 INTE: %u\n", state); m_inte = state; + + check_interrupt(); } -- cgit v1.2.3 From 967a4eeeb0b2fd7d33784c6d1331b2a279f54179 Mon Sep 17 00:00:00 2001 From: AJR Date: Wed, 28 Mar 2018 13:56:43 -0400 Subject: dynax.cpp: Replace CPU_VBLANK_INT with SCREEN_VBLANK_CALLBACK (nw) --- src/mame/drivers/ddenlovr.cpp | 4 ++-- src/mame/drivers/dynax.cpp | 53 +++++++++++++++++++++++-------------------- src/mame/includes/dynax.h | 6 ++--- 3 files changed, 34 insertions(+), 29 deletions(-) diff --git a/src/mame/drivers/ddenlovr.cpp b/src/mame/drivers/ddenlovr.cpp index aa8cea9a4f6..2db837c1dd5 100644 --- a/src/mame/drivers/ddenlovr.cpp +++ b/src/mame/drivers/ddenlovr.cpp @@ -4399,8 +4399,7 @@ MACHINE_CONFIG_START(ddenlovr_state::htengoku) MCFG_CPU_ADD("maincpu",Z80,20000000 / 4) MCFG_CPU_PROGRAM_MAP(htengoku_mem_map) MCFG_CPU_IO_MAP(htengoku_io_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", ddenlovr_state, sprtmtch_vblank_interrupt) /* IM 0 needs an opcode on the data bus */ - MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("mainirq", rst_pos_buffer_device, inta_cb) + MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("mainirq", rst_pos_buffer_device, inta_cb) // IM 0 needs an opcode on the data bus MCFG_DEVICE_ADD("bankdev", ADDRESS_MAP_BANK, 0) MCFG_DEVICE_PROGRAM_MAP(htengoku_banked_map) @@ -4431,6 +4430,7 @@ MACHINE_CONFIG_START(ddenlovr_state::htengoku) MCFG_SCREEN_UPDATE_DRIVER(ddenlovr_state, screen_update_htengoku) MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(ddenlovr_state, sprtmtch_vblank_w)) MCFG_PALETTE_ADD("palette", 16*256) diff --git a/src/mame/drivers/dynax.cpp b/src/mame/drivers/dynax.cpp index e997f781f93..9b1ce812dad 100644 --- a/src/mame/drivers/dynax.cpp +++ b/src/mame/drivers/dynax.cpp @@ -128,9 +128,10 @@ WRITE_LINE_MEMBER(dynax_state::blitter_ack_w) } } -INTERRUPT_GEN_MEMBER(dynax_state::sprtmtch_vblank_interrupt) +WRITE_LINE_MEMBER(dynax_state::sprtmtch_vblank_w) { - m_mainirq->rst2_w(1); + if (state) + m_mainirq->rst2_w(1); } @@ -170,9 +171,13 @@ WRITE_LINE_MEMBER(dynax_state::jantouki_blitter2_ack_w) } } -INTERRUPT_GEN_MEMBER(dynax_state::jantouki_vblank_interrupt) +WRITE_LINE_MEMBER(dynax_state::jantouki_vblank_w) { - m_mainirq->rst4_w(1); + if (state) + { + m_mainirq->rst4_w(1); + m_soundirq->rst4_w(1); + } } @@ -180,11 +185,6 @@ INTERRUPT_GEN_MEMBER(dynax_state::jantouki_vblank_interrupt) Jantouki - Sound CPU ***************************************************************************/ -INTERRUPT_GEN_MEMBER(dynax_state::jantouki_sound_vblank_interrupt) -{ - m_soundirq->rst4_w(1); -} - WRITE8_MEMBER(dynax_state::jantouki_sound_vblank_ack_w) { m_soundirq->rst4_w(0); @@ -4203,8 +4203,7 @@ MACHINE_CONFIG_START(dynax_state::cdracula) MCFG_CPU_ADD("maincpu", Z80, XTAL(21'477'272)/4) /* 5.3693175MHz measured */ MCFG_CPU_PROGRAM_MAP(cdracula_mem_map) MCFG_CPU_IO_MAP(cdracula_io_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", dynax_state, sprtmtch_vblank_interrupt) /* IM 0 needs an opcode on the data bus */ - MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("mainirq", rst_pos_buffer_device, inta_cb) + MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("mainirq", rst_pos_buffer_device, inta_cb) // IM 0 needs an opcode on the data bus MCFG_MACHINE_START_OVERRIDE(dynax_state,dynax) MCFG_MACHINE_RESET_OVERRIDE(dynax_state,dynax) @@ -4227,6 +4226,7 @@ MACHINE_CONFIG_START(dynax_state::cdracula) MCFG_SCREEN_VISIBLE_AREA(16, 512-16-1, 16, 256-1) MCFG_SCREEN_UPDATE_DRIVER(dynax_state, screen_update_cdracula) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(dynax_state, sprtmtch_vblank_w)) MCFG_PALETTE_ADD("palette", 512) @@ -4251,8 +4251,7 @@ MACHINE_CONFIG_START(dynax_state::hanamai) MCFG_CPU_ADD("maincpu",Z80,22000000 / 4) /* 5.5MHz */ MCFG_CPU_PROGRAM_MAP(sprtmtch_mem_map) MCFG_CPU_IO_MAP(hanamai_io_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", dynax_state, sprtmtch_vblank_interrupt) /* IM 0 needs an opcode on the data bus */ - MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("mainirq", rst_pos_buffer_device, inta_cb) + MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("mainirq", rst_pos_buffer_device, inta_cb) // IM 0 needs an opcode on the data bus MCFG_MACHINE_START_OVERRIDE(dynax_state,hanamai) MCFG_MACHINE_RESET_OVERRIDE(dynax_state,dynax) @@ -4280,6 +4279,7 @@ MACHINE_CONFIG_START(dynax_state::hanamai) MCFG_SCREEN_VISIBLE_AREA(0, 512-1-4, 16+8, 255-8) MCFG_SCREEN_UPDATE_DRIVER(dynax_state, screen_update_hanamai) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(dynax_state, sprtmtch_vblank_w)) MCFG_PALETTE_ADD("palette", 512) @@ -4319,8 +4319,7 @@ MACHINE_CONFIG_START(dynax_state::hnoridur) MCFG_CPU_ADD("maincpu",Z80,XTAL(22'000'000) / 4) /* 5.5MHz */ MCFG_CPU_PROGRAM_MAP(hnoridur_mem_map) MCFG_CPU_IO_MAP(hnoridur_io_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", dynax_state, sprtmtch_vblank_interrupt) /* IM 0 needs an opcode on the data bus */ - MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("mainirq", rst_pos_buffer_device, inta_cb) + MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("mainirq", rst_pos_buffer_device, inta_cb) // IM 0 needs an opcode on the data bus MCFG_MACHINE_START_OVERRIDE(dynax_state,dynax) MCFG_MACHINE_RESET_OVERRIDE(dynax_state,dynax) @@ -4354,6 +4353,7 @@ MACHINE_CONFIG_START(dynax_state::hnoridur) MCFG_SCREEN_VISIBLE_AREA(0, 512-1-4, 16, 256-1) MCFG_SCREEN_UPDATE_DRIVER(dynax_state, screen_update_hnoridur) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(dynax_state, sprtmtch_vblank_w)) MCFG_PALETTE_ADD("palette", 16*256) @@ -4386,8 +4386,7 @@ MACHINE_CONFIG_START(dynax_state::hjingi) MCFG_CPU_ADD("maincpu",Z80, XTAL(22'000'000) / 4) MCFG_CPU_PROGRAM_MAP(hjingi_mem_map) MCFG_CPU_IO_MAP(hjingi_io_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", dynax_state, sprtmtch_vblank_interrupt) /* IM 0 needs an opcode on the data bus */ - MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("mainirq", rst_pos_buffer_device, inta_cb) + MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("mainirq", rst_pos_buffer_device, inta_cb) // IM 0 needs an opcode on the data bus MCFG_MACHINE_START_OVERRIDE(dynax_state,hjingi) MCFG_MACHINE_RESET_OVERRIDE(dynax_state,dynax) @@ -4423,6 +4422,7 @@ MACHINE_CONFIG_START(dynax_state::hjingi) MCFG_SCREEN_VISIBLE_AREA(0, 512-1-4, 16, 256-1) MCFG_SCREEN_UPDATE_DRIVER(dynax_state, screen_update_hnoridur) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(dynax_state, sprtmtch_vblank_w)) MCFG_PALETTE_ADD("palette", 16*256) @@ -4455,8 +4455,7 @@ MACHINE_CONFIG_START(dynax_state::sprtmtch) MCFG_CPU_ADD("maincpu", Z80,22000000 / 4) /* 5.5MHz */ MCFG_CPU_PROGRAM_MAP(sprtmtch_mem_map) MCFG_CPU_IO_MAP(sprtmtch_io_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", dynax_state, sprtmtch_vblank_interrupt) /* IM 0 needs an opcode on the data bus */ - MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("mainirq", rst_pos_buffer_device, inta_cb) + MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("mainirq", rst_pos_buffer_device, inta_cb) // IM 0 needs an opcode on the data bus MCFG_MACHINE_START_OVERRIDE(dynax_state,hanamai) MCFG_MACHINE_RESET_OVERRIDE(dynax_state,dynax) @@ -4481,6 +4480,7 @@ MACHINE_CONFIG_START(dynax_state::sprtmtch) MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 16, 256-1) MCFG_SCREEN_UPDATE_DRIVER(dynax_state, screen_update_sprtmtch) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(dynax_state, sprtmtch_vblank_w)) MCFG_PALETTE_ADD("palette", 512) @@ -4505,13 +4505,18 @@ MACHINE_CONFIG_END Mahjong Friday ***************************************************************************/ +WRITE_LINE_MEMBER(dynax_state::mjfriday_vblank_w) +{ + if (state) + m_maincpu->set_input_line(0, HOLD_LINE); +} + MACHINE_CONFIG_START(dynax_state::mjfriday) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80,24000000/4) /* 6 MHz? */ MCFG_CPU_PROGRAM_MAP(sprtmtch_mem_map) MCFG_CPU_IO_MAP(mjfriday_io_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", dynax_state, irq0_line_hold) MCFG_MACHINE_START_OVERRIDE(dynax_state,hanamai) MCFG_MACHINE_RESET_OVERRIDE(dynax_state,dynax) @@ -4536,6 +4541,7 @@ MACHINE_CONFIG_START(dynax_state::mjfriday) MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 256-1) MCFG_SCREEN_UPDATE_DRIVER(dynax_state, screen_update_mjdialq2) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(dynax_state, mjfriday_vblank_w)) MCFG_PALETTE_ADD("palette", 512) @@ -4659,14 +4665,12 @@ MACHINE_CONFIG_START(dynax_state::jantouki) MCFG_CPU_ADD("maincpu",Z80,22000000 / 4) /* 5.5MHz */ MCFG_CPU_PROGRAM_MAP(jantouki_mem_map) MCFG_CPU_IO_MAP(jantouki_io_map) - MCFG_CPU_VBLANK_INT_DRIVER("top", dynax_state, jantouki_vblank_interrupt) /* IM 0 needs an opcode on the data bus */ - MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("mainirq", rst_pos_buffer_device, inta_cb) + MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("mainirq", rst_pos_buffer_device, inta_cb) // IM 0 needs an opcode on the data bus MCFG_CPU_ADD("soundcpu",Z80,22000000 / 4) /* 5.5MHz */ MCFG_CPU_PROGRAM_MAP(jantouki_sound_mem_map) MCFG_CPU_IO_MAP(jantouki_sound_io_map) - MCFG_CPU_VBLANK_INT_DRIVER("top", dynax_state, jantouki_sound_vblank_interrupt) /* IM 0 needs an opcode on the data bus */ - MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("soundirq", rst_pos_buffer_device, inta_cb) + MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("soundirq", rst_pos_buffer_device, inta_cb) // IM 0 needs an opcode on the data bus MCFG_MACHINE_START_OVERRIDE(dynax_state,jantouki) MCFG_MACHINE_RESET_OVERRIDE(dynax_state,dynax) @@ -4702,6 +4706,7 @@ MACHINE_CONFIG_START(dynax_state::jantouki) MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 16, 256-1) MCFG_SCREEN_UPDATE_DRIVER(dynax_state, screen_update_jantouki_top) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(dynax_state, jantouki_vblank_w)) MCFG_SCREEN_ADD("bottom", RASTER) MCFG_SCREEN_REFRESH_RATE(60) diff --git a/src/mame/includes/dynax.h b/src/mame/includes/dynax.h index f93f264415e..a4545017e9f 100644 --- a/src/mame/includes/dynax.h +++ b/src/mame/includes/dynax.h @@ -253,9 +253,9 @@ public: uint32_t screen_update_jantouki_bottom(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_cdracula(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - INTERRUPT_GEN_MEMBER(sprtmtch_vblank_interrupt); - INTERRUPT_GEN_MEMBER(jantouki_vblank_interrupt); - INTERRUPT_GEN_MEMBER(jantouki_sound_vblank_interrupt); + DECLARE_WRITE_LINE_MEMBER(sprtmtch_vblank_w); + DECLARE_WRITE_LINE_MEMBER(jantouki_vblank_w); + DECLARE_WRITE_LINE_MEMBER(mjfriday_vblank_w); void tenkai_update_rombank(); -- cgit v1.2.3 From 719209e150471624a7890f5fd18612ef0d42cb51 Mon Sep 17 00:00:00 2001 From: AJR Date: Wed, 28 Mar 2018 14:01:55 -0400 Subject: yiear, tp84, pandoras: Replace CPU_VBLANK_INT with SCREEN_VBLANK_CALLBACK (nw) --- src/mame/drivers/pandoras.cpp | 17 ++++++----------- src/mame/drivers/tp84.cpp | 19 ++++++++----------- src/mame/drivers/yiear.cpp | 8 ++++---- src/mame/includes/pandoras.h | 3 +-- src/mame/includes/tp84.h | 5 +++-- src/mame/includes/yiear.h | 2 +- 6 files changed, 23 insertions(+), 31 deletions(-) diff --git a/src/mame/drivers/pandoras.cpp b/src/mame/drivers/pandoras.cpp index 64211f1d80f..649eb6b4b11 100644 --- a/src/mame/drivers/pandoras.cpp +++ b/src/mame/drivers/pandoras.cpp @@ -44,16 +44,12 @@ Boards: #define SOUND_CLOCK XTAL(14'318'181) -INTERRUPT_GEN_MEMBER(pandoras_state::pandoras_master_interrupt) +WRITE_LINE_MEMBER(pandoras_state::vblank_irq) { - if (m_irq_enable_a) - device.execute().set_input_line(M6809_IRQ_LINE, ASSERT_LINE); -} - -INTERRUPT_GEN_MEMBER(pandoras_state::pandoras_slave_interrupt) -{ - if (m_irq_enable_b) - device.execute().set_input_line(M6809_IRQ_LINE, ASSERT_LINE); + if (state && m_irq_enable_a) + m_maincpu->set_input_line(M6809_IRQ_LINE, ASSERT_LINE); + if (state && m_irq_enable_b) + m_subcpu->set_input_line(M6809_IRQ_LINE, ASSERT_LINE); } WRITE_LINE_MEMBER(pandoras_state::cpua_irq_enable_w) @@ -315,11 +311,9 @@ MACHINE_CONFIG_START(pandoras_state::pandoras) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", MC6809E, MASTER_CLOCK/6) /* CPU A */ MCFG_CPU_PROGRAM_MAP(pandoras_master_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", pandoras_state, pandoras_master_interrupt) MCFG_CPU_ADD("sub", MC6809E, MASTER_CLOCK/6) /* CPU B */ MCFG_CPU_PROGRAM_MAP(pandoras_slave_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", pandoras_state, pandoras_slave_interrupt) MCFG_CPU_ADD("audiocpu", Z80, SOUND_CLOCK/8) MCFG_CPU_PROGRAM_MAP(pandoras_sound_map) @@ -351,6 +345,7 @@ MACHINE_CONFIG_START(pandoras_state::pandoras) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(pandoras_state, screen_update_pandoras) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(pandoras_state, vblank_irq)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", pandoras) MCFG_PALETTE_ADD("palette", 16*16+16*16) diff --git a/src/mame/drivers/tp84.cpp b/src/mame/drivers/tp84.cpp index 3df862b27dd..861221daf9e 100644 --- a/src/mame/drivers/tp84.cpp +++ b/src/mame/drivers/tp84.cpp @@ -87,10 +87,12 @@ void tp84_state::machine_start() } -INTERRUPT_GEN_MEMBER(tp84_state::main_vblank_irq) +WRITE_LINE_MEMBER(tp84_state::vblank_irq) { - if (m_irq_enable) - device.execute().set_input_line(0, ASSERT_LINE); + if (state && m_irq_enable) + m_maincpu->set_input_line(0, ASSERT_LINE); + if (state && m_sub_irq_mask) + m_subcpu->set_input_line(0, ASSERT_LINE); } @@ -216,6 +218,8 @@ void tp84_state::tp84b_cpu1_map(address_map &map) WRITE8_MEMBER(tp84_state::sub_irq_mask_w) { m_sub_irq_mask = data & 1; + if (!m_sub_irq_mask) + m_subcpu->set_input_line(0, CLEAR_LINE); } @@ -325,23 +329,15 @@ static GFXDECODE_START( tp84 ) GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 64*4*8, 16*8 ) GFXDECODE_END -INTERRUPT_GEN_MEMBER(tp84_state::sub_vblank_irq) -{ - if(m_sub_irq_mask) - device.execute().set_input_line(0, HOLD_LINE); -} - MACHINE_CONFIG_START(tp84_state::tp84) /* basic machine hardware */ MCFG_CPU_ADD("cpu1", MC6809E, XTAL(18'432'000)/12) /* verified on pcb */ MCFG_CPU_PROGRAM_MAP(tp84_cpu1_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", tp84_state, main_vblank_irq) MCFG_CPU_ADD("sub", MC6809E, XTAL(18'432'000)/12) /* verified on pcb */ MCFG_CPU_PROGRAM_MAP(cpu2_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", tp84_state, sub_vblank_irq) MCFG_CPU_ADD("audiocpu", Z80,XTAL(14'318'181)/4) /* verified on pcb */ MCFG_CPU_PROGRAM_MAP(audio_map) @@ -366,6 +362,7 @@ MACHINE_CONFIG_START(tp84_state::tp84) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(tp84_state, screen_update_tp84) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(tp84_state, vblank_irq)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", tp84) MCFG_PALETTE_ADD("palette", 4096) diff --git a/src/mame/drivers/yiear.cpp b/src/mame/drivers/yiear.cpp index 558e3870544..33fc413defd 100644 --- a/src/mame/drivers/yiear.cpp +++ b/src/mame/drivers/yiear.cpp @@ -124,10 +124,10 @@ WRITE8_MEMBER(yiear_state::yiear_VLM5030_control_w) m_vlm->rst((data >> 2) & 1); } -INTERRUPT_GEN_MEMBER(yiear_state::yiear_vblank_interrupt) +WRITE_LINE_MEMBER(yiear_state::vblank_irq) { - if (m_yiear_irq_enable) - device.execute().set_input_line(0, HOLD_LINE); + if (state && m_yiear_irq_enable) + m_maincpu->set_input_line(0, HOLD_LINE); } @@ -285,7 +285,6 @@ MACHINE_CONFIG_START(yiear_state::yiear) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", MC6809E, XTAL(18'432'000)/12) /* verified on pcb */ MCFG_CPU_PROGRAM_MAP(main_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", yiear_state, yiear_vblank_interrupt) MCFG_CPU_PERIODIC_INT_DRIVER(yiear_state, yiear_nmi_interrupt, 480) /* music tempo (correct frequency unknown) */ MCFG_WATCHDOG_ADD("watchdog") @@ -298,6 +297,7 @@ MACHINE_CONFIG_START(yiear_state::yiear) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(yiear_state, screen_update_yiear) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(yiear_state, vblank_irq)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", yiear) MCFG_PALETTE_ADD("palette", 32) diff --git a/src/mame/includes/pandoras.h b/src/mame/includes/pandoras.h index 7d60fdaa002..2c0999e8013 100644 --- a/src/mame/includes/pandoras.h +++ b/src/mame/includes/pandoras.h @@ -65,8 +65,7 @@ public: virtual void video_start() override; DECLARE_PALETTE_INIT(pandoras); uint32_t screen_update_pandoras(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - INTERRUPT_GEN_MEMBER(pandoras_master_interrupt); - INTERRUPT_GEN_MEMBER(pandoras_slave_interrupt); + DECLARE_WRITE_LINE_MEMBER(vblank_irq); void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect, uint8_t* sr ); void pandoras(machine_config &config); void pandoras_i8039_io_map(address_map &map); diff --git a/src/mame/includes/tp84.h b/src/mame/includes/tp84.h index 38705b1e52f..169f38957a9 100644 --- a/src/mame/includes/tp84.h +++ b/src/mame/includes/tp84.h @@ -8,6 +8,7 @@ public: tp84_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), m_maincpu(*this, "cpu1"), + m_subcpu(*this, "sub"), m_audiocpu(*this, "audiocpu"), m_palette_bank(*this, "palette_bank"), m_scroll_x(*this, "scroll_x"), @@ -22,6 +23,7 @@ public: m_palette(*this, "palette") { } required_device m_maincpu; + required_device m_subcpu; required_device m_audiocpu; required_shared_ptr m_palette_bank; required_shared_ptr m_scroll_x; @@ -59,8 +61,7 @@ public: virtual void video_start() override; DECLARE_PALETTE_INIT(tp84); uint32_t screen_update_tp84(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - INTERRUPT_GEN_MEMBER(main_vblank_irq); - INTERRUPT_GEN_MEMBER(sub_vblank_irq); + DECLARE_WRITE_LINE_MEMBER(vblank_irq); void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect); void tp84(machine_config &config); void tp84b(machine_config &config); diff --git a/src/mame/includes/yiear.h b/src/mame/includes/yiear.h index 328386d0bcd..9de90c03a2a 100644 --- a/src/mame/includes/yiear.h +++ b/src/mame/includes/yiear.h @@ -49,7 +49,7 @@ public: virtual void video_start() override; DECLARE_PALETTE_INIT(yiear); uint32_t screen_update_yiear(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - INTERRUPT_GEN_MEMBER(yiear_vblank_interrupt); + DECLARE_WRITE_LINE_MEMBER(vblank_irq); INTERRUPT_GEN_MEMBER(yiear_nmi_interrupt); void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect ); void yiear(machine_config &config); -- cgit v1.2.3 From fb583032202d4cb238506370f710d8bb70cd3e0f Mon Sep 17 00:00:00 2001 From: AJR Date: Wed, 28 Mar 2018 14:38:30 -0400 Subject: ddenlovr.cpp: Replace CPU_VBLANK_INT with SCREEN_VBLANK_CALLBACK (nw) --- src/mame/drivers/ddenlovr.cpp | 154 +++++++++++++++++++++++++++++------------- 1 file changed, 107 insertions(+), 47 deletions(-) diff --git a/src/mame/drivers/ddenlovr.cpp b/src/mame/drivers/ddenlovr.cpp index 2db837c1dd5..5a7311d8144 100644 --- a/src/mame/drivers/ddenlovr.cpp +++ b/src/mame/drivers/ddenlovr.cpp @@ -246,15 +246,17 @@ public: uint32_t screen_update_ddenlovr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_htengoku(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - INTERRUPT_GEN_MEMBER(quizchq_irq); - INTERRUPT_GEN_MEMBER(mmpanic_irq); + DECLARE_WRITE_LINE_MEMBER(ddenlovr_irq); + DECLARE_WRITE_LINE_MEMBER(quizchq_irq); + DECLARE_WRITE_LINE_MEMBER(mmpanic_irq); DECLARE_WRITE_LINE_MEMBER(quizchq_rtc_irq); DECLARE_WRITE_LINE_MEMBER(mmpanic_rtc_irq); - INTERRUPT_GEN_MEMBER(hanakanz_irq); - INTERRUPT_GEN_MEMBER(mjchuuka_irq); - INTERRUPT_GEN_MEMBER(hginga_irq); - INTERRUPT_GEN_MEMBER(mjflove_irq); - INTERRUPT_GEN_MEMBER(hparadis_irq); + DECLARE_WRITE_LINE_MEMBER(hanakanz_irq); + DECLARE_WRITE_LINE_MEMBER(mjchuuka_irq); + DECLARE_WRITE_LINE_MEMBER(funkyfig_irq); + DECLARE_WRITE_LINE_MEMBER(hginga_irq); + DECLARE_WRITE_LINE_MEMBER(mjflove_irq); + DECLARE_WRITE_LINE_MEMBER(hparadis_irq); DECLARE_WRITE_LINE_MEMBER(hanakanz_rtc_irq); DECLARE_WRITE_LINE_MEMBER(mjchuuka_rtc_irq); DECLARE_WRITE_LINE_MEMBER(hginga_rtc_irq); @@ -9744,12 +9746,17 @@ MACHINE_START_MEMBER(ddenlovr_state,sryudens) Don Den Lover Vol.1 ***************************************************************************/ +WRITE_LINE_MEMBER(ddenlovr_state::ddenlovr_irq) +{ + if (state) + m_maincpu->set_input_line(M68K_IRQ_1, HOLD_LINE); +} + MACHINE_CONFIG_START(ddenlovr_state::ddenlovr) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",M68000, XTAL(24'000'000) / 2) MCFG_CPU_PROGRAM_MAP(ddenlovr_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", ddenlovr_state, irq1_line_hold) MCFG_DEVICE_ADD("mainlatch", LS259, 0) MCFG_ADDRESSABLE_LATCH_Q1_OUT_CB(WRITELINE(ddenlovr_state, ddenlovr_blitter_irq_ack_w)) @@ -9768,6 +9775,7 @@ MACHINE_CONFIG_START(ddenlovr_state::ddenlovr) MCFG_SCREEN_UPDATE_DRIVER(ddenlovr_state, screen_update_ddenlovr) MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(ddenlovr_state, ddenlovr_irq)) MCFG_PALETTE_ADD("palette", 0x100) @@ -9870,9 +9878,10 @@ MACHINE_CONFIG_END 0xee is vblank 0xfc is from the 6242RTC */ -INTERRUPT_GEN_MEMBER(ddenlovr_state::quizchq_irq) +WRITE_LINE_MEMBER(ddenlovr_state::quizchq_irq) { -// int scanline = param; + if (!state) + return; /* I haven't found a irq ack register, so I need this kludge to make sure I don't lose any interrupt generated by the blitter, @@ -9883,9 +9892,10 @@ INTERRUPT_GEN_MEMBER(ddenlovr_state::quizchq_irq) m_maincpu->set_input_line_and_vector(0, HOLD_LINE, 0xee); } -WRITE_LINE_MEMBER(ddenlovr_state::quizchq_rtc_irq ) +WRITE_LINE_MEMBER(ddenlovr_state::quizchq_rtc_irq) { - m_maincpu->set_input_line_and_vector(0, HOLD_LINE, 0xfc); + if (state) + m_maincpu->set_input_line_and_vector(0, HOLD_LINE, 0xfc); } MACHINE_CONFIG_START(ddenlovr_state::quizchq) @@ -9894,7 +9904,6 @@ MACHINE_CONFIG_START(ddenlovr_state::quizchq) MCFG_CPU_ADD("maincpu", Z80, XTAL(16'000'000)/2) /* Verified */ MCFG_CPU_PROGRAM_MAP(quizchq_map) MCFG_CPU_IO_MAP(quizchq_portmap) - MCFG_CPU_VBLANK_INT_DRIVER("screen", ddenlovr_state, quizchq_irq) MCFG_MACHINE_START_OVERRIDE(ddenlovr_state,rongrong) MCFG_MACHINE_RESET_OVERRIDE(ddenlovr_state,ddenlovr) @@ -9908,6 +9917,7 @@ MACHINE_CONFIG_START(ddenlovr_state::quizchq) MCFG_SCREEN_UPDATE_DRIVER(ddenlovr_state, screen_update_ddenlovr) MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(ddenlovr_state, quizchq_irq)) MCFG_PALETTE_ADD("palette", 0x100) @@ -9949,9 +9959,10 @@ MACHINE_CONFIG_END RST 20 is from the link device? */ -INTERRUPT_GEN_MEMBER(ddenlovr_state::mmpanic_irq) +WRITE_LINE_MEMBER(ddenlovr_state::mmpanic_irq) { - //int scanline = param; + if (!state) + return; /* I haven't found a irq ack register, so I need this kludge to make sure I don't lose any interrupt generated by the blitter, @@ -9960,12 +9971,14 @@ INTERRUPT_GEN_MEMBER(ddenlovr_state::mmpanic_irq) // return; m_maincpu->set_input_line_and_vector(0, HOLD_LINE, 0xcf); // RST 08, vblank + m_soundcpu->set_input_line(0, HOLD_LINE); // NMI by main cpu } -WRITE_LINE_MEMBER(ddenlovr_state::mmpanic_rtc_irq ) +WRITE_LINE_MEMBER(ddenlovr_state::mmpanic_rtc_irq) { - m_maincpu->set_input_line_and_vector(0, HOLD_LINE, 0xdf); // RST 18, clock + if (state) + m_maincpu->set_input_line_and_vector(0, HOLD_LINE, 0xdf); // RST 18, clock } MACHINE_CONFIG_START(ddenlovr_state::mmpanic) @@ -9974,12 +9987,10 @@ MACHINE_CONFIG_START(ddenlovr_state::mmpanic) MCFG_CPU_ADD("maincpu", Z80, 8000000) MCFG_CPU_PROGRAM_MAP(mmpanic_map) MCFG_CPU_IO_MAP(mmpanic_portmap) - MCFG_CPU_VBLANK_INT_DRIVER("screen", ddenlovr_state, mmpanic_irq) MCFG_CPU_ADD("soundcpu", Z80, 3579545) MCFG_CPU_PROGRAM_MAP(mmpanic_sound_map) MCFG_CPU_IO_MAP(mmpanic_sound_portmap) - MCFG_CPU_VBLANK_INT_DRIVER("screen", ddenlovr_state, irq0_line_hold) // NMI by main cpu MCFG_MACHINE_START_OVERRIDE(ddenlovr_state,mmpanic) MCFG_MACHINE_RESET_OVERRIDE(ddenlovr_state,ddenlovr) @@ -9993,6 +10004,7 @@ MACHINE_CONFIG_START(ddenlovr_state::mmpanic) MCFG_SCREEN_UPDATE_DRIVER(ddenlovr_state, screen_update_ddenlovr) MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(ddenlovr_state, mmpanic_irq)) MCFG_PALETTE_ADD("palette", 0x100) @@ -10031,8 +10043,11 @@ MACHINE_CONFIG_END 0xe2 is from the 6242RTC */ -INTERRUPT_GEN_MEMBER(ddenlovr_state::hanakanz_irq) +WRITE_LINE_MEMBER(ddenlovr_state::hanakanz_irq) { + if (!state) + return; + /* I haven't found a irq ack register, so I need this kludge to make sure I don't lose any interrupt generated by the blitter, otherwise quizchq would lock up. */ @@ -10044,6 +10059,9 @@ INTERRUPT_GEN_MEMBER(ddenlovr_state::hanakanz_irq) WRITE_LINE_MEMBER(ddenlovr_state::hanakanz_rtc_irq) { + if (!state) + return; + /* I haven't found a irq ack register, so I need this kludge to make sure I don't lose any interrupt generated by the blitter, otherwise quizchq would lock up. */ @@ -10059,7 +10077,6 @@ MACHINE_CONFIG_START(ddenlovr_state::hanakanz) MCFG_CPU_ADD("maincpu",Z80,8000000) // TMPZ84C015BF-8 MCFG_CPU_PROGRAM_MAP(hanakanz_map) MCFG_CPU_IO_MAP(hanakanz_portmap) - MCFG_CPU_VBLANK_INT_DRIVER("screen", ddenlovr_state, hanakanz_irq) MCFG_MACHINE_START_OVERRIDE(ddenlovr_state,hanakanz) MCFG_MACHINE_RESET_OVERRIDE(ddenlovr_state,ddenlovr) @@ -10073,6 +10090,7 @@ MACHINE_CONFIG_START(ddenlovr_state::hanakanz) MCFG_SCREEN_UPDATE_DRIVER(ddenlovr_state, screen_update_ddenlovr) MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(ddenlovr_state, hanakanz_irq)) MCFG_PALETTE_ADD("palette", 0x200) @@ -10106,7 +10124,6 @@ MACHINE_CONFIG_START(ddenlovr_state::kotbinyo) MCFG_CPU_ADD("maincpu",Z80, XTAL(20'000'000) / 2) // !! KL5C80A12CFP @ 10MHz? (actually 4 times faster than Z80) !! MCFG_CPU_PROGRAM_MAP(hanakanz_map) MCFG_CPU_IO_MAP(kotbinyo_portmap) - MCFG_CPU_VBLANK_INT_DRIVER("screen", ddenlovr_state, hanakanz_irq) MCFG_MACHINE_START_OVERRIDE(ddenlovr_state,hanakanz) MCFG_MACHINE_RESET_OVERRIDE(ddenlovr_state,ddenlovr) @@ -10120,6 +10137,7 @@ MACHINE_CONFIG_START(ddenlovr_state::kotbinyo) MCFG_SCREEN_UPDATE_DRIVER(ddenlovr_state, screen_update_ddenlovr) MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(ddenlovr_state, hanakanz_irq)) MCFG_PALETTE_ADD("palette", 0x200) @@ -10166,8 +10184,11 @@ MACHINE_CONFIG_END 0xf8 is vblank 0xfa is from the 6242RTC */ -INTERRUPT_GEN_MEMBER(ddenlovr_state::mjchuuka_irq) +WRITE_LINE_MEMBER(ddenlovr_state::mjchuuka_irq) { + if (!state) + return; + /* I haven't found a irq ack register, so I need this kludge to make sure I don't lose any interrupt generated by the blitter, otherwise quizchq would lock up. */ @@ -10179,6 +10200,9 @@ INTERRUPT_GEN_MEMBER(ddenlovr_state::mjchuuka_irq) WRITE_LINE_MEMBER(ddenlovr_state::mjchuuka_rtc_irq) { + if (!state) + return; + /* I haven't found a irq ack register, so I need this kludge to make sure I don't lose any interrupt generated by the blitter, otherwise quizchq would lock up. */ @@ -10194,7 +10218,9 @@ MACHINE_CONFIG_START(ddenlovr_state::mjchuuka) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") MCFG_CPU_IO_MAP(mjchuuka_portmap) - MCFG_CPU_VBLANK_INT_DRIVER("screen", ddenlovr_state, mjchuuka_irq) + + MCFG_DEVICE_MODIFY("screen") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(ddenlovr_state, mjchuuka_irq)) MCFG_DEVICE_MODIFY("rtc") MCFG_MSM6242_OUT_INT_HANDLER(WRITELINE(ddenlovr_state, mjchuuka_rtc_irq)) @@ -10204,15 +10230,32 @@ MACHINE_CONFIG_START(ddenlovr_state::mjchuuka) MACHINE_CONFIG_END +WRITE_LINE_MEMBER(ddenlovr_state::funkyfig_irq) +{ + if (!state) + return; + + /* I haven't found a irq ack register, so I need this kludge to + make sure I don't lose any interrupt generated by the blitter, + otherwise quizchq would lock up. */ + //if (downcast(m_maincpu)->input_state(0)) + // return; + + m_maincpu->set_input_line_and_vector(0, HOLD_LINE, 0xf8); // RST 08, vblank + m_soundcpu->set_input_line(0, HOLD_LINE); // NMI by main cpu +} + MACHINE_CONFIG_START(ddenlovr_state::funkyfig) mmpanic(config); MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(funkyfig_map) MCFG_CPU_IO_MAP(funkyfig_portmap) - MCFG_CPU_VBLANK_INT_DRIVER("screen", ddenlovr_state, mjchuuka_irq) MCFG_MACHINE_START_OVERRIDE(ddenlovr_state,funkyfig) + MCFG_DEVICE_MODIFY("screen") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(ddenlovr_state, funkyfig_irq)) + MCFG_DEVICE_MODIFY("rtc") MCFG_MSM6242_OUT_INT_HANDLER(WRITELINE(ddenlovr_state, mjchuuka_rtc_irq)) @@ -10233,7 +10276,6 @@ MACHINE_CONFIG_START(ddenlovr_state::mjschuka) MCFG_CPU_ADD("maincpu",Z80,XTAL(16'000'000)/2) MCFG_CPU_PROGRAM_MAP(mjmyster_map) MCFG_CPU_IO_MAP(mjschuka_portmap) - MCFG_CPU_VBLANK_INT_DRIVER("screen", ddenlovr_state, hginga_irq) MCFG_MACHINE_START_OVERRIDE(ddenlovr_state,hanakanz) MCFG_MACHINE_RESET_OVERRIDE(ddenlovr_state,ddenlovr) @@ -10247,6 +10289,7 @@ MACHINE_CONFIG_START(ddenlovr_state::mjschuka) MCFG_SCREEN_UPDATE_DRIVER(ddenlovr_state, screen_update_ddenlovr) MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(ddenlovr_state, hginga_irq)) MCFG_PALETTE_ADD("palette", 0x200) @@ -10347,9 +10390,10 @@ MACHINE_CONFIG_END 0xfa and/or 0xfc are from the blitter (almost identical) 0xee triggered by the RTC */ -INTERRUPT_GEN_MEMBER(ddenlovr_state::hginga_irq) +WRITE_LINE_MEMBER(ddenlovr_state::hginga_irq) { -// int scanline = param; + if (!state) + return; /* I haven't found a irq ack register, so I need this kludge to make sure I don't lose any interrupt generated by the blitter, @@ -10362,6 +10406,9 @@ INTERRUPT_GEN_MEMBER(ddenlovr_state::hginga_irq) WRITE_LINE_MEMBER(ddenlovr_state::hginga_rtc_irq) { + if (!state) + return; + /* I haven't found a irq ack register, so I need this kludge to make sure I don't lose any interrupt generated by the blitter, otherwise quizchq would lock up. */ @@ -10379,7 +10426,9 @@ MACHINE_CONFIG_START(ddenlovr_state::hginga) MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(hginga_map) MCFG_CPU_IO_MAP(hginga_portmap) - MCFG_CPU_VBLANK_INT_DRIVER("screen", ddenlovr_state, hginga_irq) + + MCFG_DEVICE_MODIFY("screen") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(ddenlovr_state, hginga_irq)) MCFG_DEVICE_MODIFY("rtc") MCFG_MSM6242_OUT_INT_HANDLER(WRITELINE(ddenlovr_state, hginga_rtc_irq)) @@ -10399,7 +10448,9 @@ MACHINE_CONFIG_START(ddenlovr_state::hgokou) MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(hgokou_map) MCFG_CPU_IO_MAP(hgokou_portmap) - MCFG_CPU_VBLANK_INT_DRIVER("screen", ddenlovr_state, hginga_irq) + + MCFG_DEVICE_MODIFY("screen") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(ddenlovr_state, hginga_irq)) MCFG_DEVICE_MODIFY("rtc") MCFG_MSM6242_OUT_INT_HANDLER(WRITELINE(ddenlovr_state, hginga_rtc_irq)) @@ -10476,16 +10527,22 @@ MACHINE_CONFIG_START(ddenlovr_state::mjmyornt) MACHINE_CONFIG_END -INTERRUPT_GEN_MEMBER(ddenlovr_state::mjflove_irq) +WRITE_LINE_MEMBER(ddenlovr_state::mjflove_irq) { - m_mjflove_irq_cause = 1; - m_maincpu->set_input_line(0, HOLD_LINE); + if (state) + { + m_mjflove_irq_cause = 1; + m_maincpu->set_input_line(0, HOLD_LINE); + } } WRITE_LINE_MEMBER(ddenlovr_state::mjflove_rtc_irq) { - m_mjflove_irq_cause = 2; - m_maincpu->set_input_line(0, HOLD_LINE); + if (state) + { + m_mjflove_irq_cause = 2; + m_maincpu->set_input_line(0, HOLD_LINE); + } } @@ -10493,15 +10550,15 @@ MACHINE_CONFIG_START(ddenlovr_state::mjflove) quizchq(config); /* basic machine hardware */ - MCFG_DEVICE_REMOVE("maincpu") - - MCFG_CPU_ADD("maincpu", Z80, XTAL(16'000'000)/2) /* Verified */ + MCFG_CPU_REPLACE("maincpu", Z80, XTAL(16'000'000)/2) /* Verified */ MCFG_CPU_PROGRAM_MAP(rongrong_map) MCFG_CPU_IO_MAP(mjflove_portmap) - MCFG_CPU_VBLANK_INT_DRIVER("screen", ddenlovr_state, mjflove_irq) MCFG_MACHINE_START_OVERRIDE(ddenlovr_state,mjflove) + MCFG_DEVICE_MODIFY("screen") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(ddenlovr_state, mjflove_irq)) + MCFG_DEVICE_REPLACE("rtc", RTC72421, XTAL(32'768)) MCFG_MSM6242_OUT_INT_HANDLER(WRITELINE(ddenlovr_state, mjflove_rtc_irq)) @@ -10513,9 +10570,10 @@ MACHINE_CONFIG_END /* It runs in IM 2, thus needs a vector on the data bus: 0xee is vblank */ -INTERRUPT_GEN_MEMBER(ddenlovr_state::hparadis_irq) +WRITE_LINE_MEMBER(ddenlovr_state::hparadis_irq) { - device.execute().set_input_line_and_vector(0, HOLD_LINE, 0xee); + if (state) + m_maincpu->set_input_line_and_vector(0, HOLD_LINE, 0xee); } MACHINE_CONFIG_START(ddenlovr_state::hparadis) @@ -10525,7 +10583,9 @@ MACHINE_CONFIG_START(ddenlovr_state::hparadis) MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(hparadis_map) MCFG_CPU_IO_MAP(hparadis_portmap) - MCFG_CPU_VBLANK_INT_DRIVER("screen", ddenlovr_state, hparadis_irq) + + MCFG_DEVICE_MODIFY("screen") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(ddenlovr_state, hparadis_irq)) MCFG_MACHINE_START_OVERRIDE(ddenlovr_state,hparadis) MACHINE_CONFIG_END @@ -10538,7 +10598,6 @@ MACHINE_CONFIG_START(ddenlovr_state::jongtei) MCFG_CPU_ADD("maincpu",Z80, XTAL(20'000'000) / 2) // TMPZ84C015 MCFG_CPU_PROGRAM_MAP(hanakanz_map) MCFG_CPU_IO_MAP(jongtei_portmap) - MCFG_CPU_VBLANK_INT_DRIVER("screen", ddenlovr_state, hanakanz_irq) MCFG_MACHINE_START_OVERRIDE(ddenlovr_state,hanakanz) MCFG_MACHINE_RESET_OVERRIDE(ddenlovr_state,ddenlovr) @@ -10552,6 +10611,7 @@ MACHINE_CONFIG_START(ddenlovr_state::jongtei) MCFG_SCREEN_UPDATE_DRIVER(ddenlovr_state, screen_update_ddenlovr) MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(ddenlovr_state, hanakanz_irq)) MCFG_PALETTE_ADD("palette", 0x200) @@ -10591,7 +10651,6 @@ MACHINE_CONFIG_START(ddenlovr_state::sryudens) MCFG_CPU_ADD("maincpu",Z80, XTAL(16'000'000) / 2) // ? MCFG_CPU_PROGRAM_MAP(sryudens_map) MCFG_CPU_IO_MAP(sryudens_portmap) - MCFG_CPU_VBLANK_INT_DRIVER("screen", ddenlovr_state, mjchuuka_irq) MCFG_MACHINE_START_OVERRIDE(ddenlovr_state,sryudens) MCFG_MACHINE_RESET_OVERRIDE(ddenlovr_state,ddenlovr) @@ -10605,6 +10664,7 @@ MACHINE_CONFIG_START(ddenlovr_state::sryudens) MCFG_SCREEN_UPDATE_DRIVER(ddenlovr_state, screen_update_ddenlovr) MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(ddenlovr_state, mjchuuka_irq)) MCFG_PALETTE_ADD("palette", 0x100) @@ -10638,7 +10698,6 @@ MACHINE_CONFIG_START(ddenlovr_state::janshinp) MCFG_CPU_ADD("maincpu",Z80, XTAL(16'000'000) / 2) MCFG_CPU_PROGRAM_MAP(janshinp_map) MCFG_CPU_IO_MAP(janshinp_portmap) - MCFG_CPU_VBLANK_INT_DRIVER("screen", ddenlovr_state, mjchuuka_irq) MCFG_MACHINE_START_OVERRIDE(ddenlovr_state,hanakanz) MCFG_MACHINE_RESET_OVERRIDE(ddenlovr_state,ddenlovr) @@ -10652,6 +10711,7 @@ MACHINE_CONFIG_START(ddenlovr_state::janshinp) MCFG_SCREEN_UPDATE_DRIVER(ddenlovr_state, screen_update_ddenlovr) MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(ddenlovr_state, mjchuuka_irq)) MCFG_PALETTE_ADD("palette", 0x100) @@ -10706,7 +10766,6 @@ MACHINE_CONFIG_START(ddenlovr_state::seljan2) MCFG_CPU_ADD("maincpu",Z80, XTAL(16'000'000) / 2) MCFG_CPU_PROGRAM_MAP(seljan2_map) MCFG_CPU_IO_MAP(seljan2_portmap) - MCFG_CPU_VBLANK_INT_DRIVER("screen", ddenlovr_state, mjchuuka_irq) MCFG_MACHINE_START_OVERRIDE(ddenlovr_state,seljan2) MCFG_MACHINE_RESET_OVERRIDE(ddenlovr_state,ddenlovr) @@ -10720,6 +10779,7 @@ MACHINE_CONFIG_START(ddenlovr_state::seljan2) MCFG_SCREEN_UPDATE_DRIVER(ddenlovr_state, screen_update_ddenlovr) MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(ddenlovr_state, mjchuuka_irq)) MCFG_PALETTE_ADD("palette", 0x100) @@ -10756,7 +10816,6 @@ MACHINE_CONFIG_START(ddenlovr_state::daimyojn) MCFG_CPU_ADD("maincpu",Z80, XTAL(20'000'000) / 2) MCFG_CPU_PROGRAM_MAP(hanakanz_map) MCFG_CPU_IO_MAP(daimyojn_portmap) - MCFG_CPU_VBLANK_INT_DRIVER("screen", ddenlovr_state, hanakanz_irq) MCFG_MACHINE_START_OVERRIDE(ddenlovr_state,mjflove) MCFG_MACHINE_RESET_OVERRIDE(ddenlovr_state,ddenlovr) @@ -10770,6 +10829,7 @@ MACHINE_CONFIG_START(ddenlovr_state::daimyojn) MCFG_SCREEN_UPDATE_DRIVER(ddenlovr_state, screen_update_ddenlovr) MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(ddenlovr_state, hanakanz_irq)) MCFG_PALETTE_ADD("palette", 0x200) -- cgit v1.2.3 From 052eb8f073997307bcac2ee79b863b3309370d6a Mon Sep 17 00:00:00 2001 From: AJR Date: Wed, 28 Mar 2018 14:44:41 -0400 Subject: galaxia.cpp: Replace CPU_VBLANK_INT with SCREEN_VBLANK_CALLBACK (nw) --- src/mame/drivers/galaxia.cpp | 13 ++++++++----- src/mame/includes/galaxia.h | 2 +- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/mame/drivers/galaxia.cpp b/src/mame/drivers/galaxia.cpp index 4cc2db75004..2bcbc18fcd4 100644 --- a/src/mame/drivers/galaxia.cpp +++ b/src/mame/drivers/galaxia.cpp @@ -78,10 +78,13 @@ TODO: #include "speaker.h" -INTERRUPT_GEN_MEMBER(galaxia_state::galaxia_interrupt) +WRITE_LINE_MEMBER(galaxia_state::vblank_irq) { - device.execute().set_input_line_and_vector(0, HOLD_LINE, 0x03); - cvs_scroll_stars(); + if (state) + { + m_maincpu->set_input_line_and_vector(0, HOLD_LINE, 0x03); + cvs_scroll_stars(); + } } @@ -295,7 +298,6 @@ MACHINE_CONFIG_START(galaxia_state::galaxia) MCFG_CPU_PROGRAM_MAP(galaxia_mem_map) MCFG_CPU_IO_MAP(galaxia_io_map) MCFG_CPU_DATA_MAP(galaxia_data_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", galaxia_state, galaxia_interrupt) MCFG_S2650_SENSE_INPUT(DEVREADLINE("screen", screen_device, vblank)) MCFG_S2650_FLAG_OUTPUT(WRITELINE(cvs_state, write_s2650_flag)) @@ -308,6 +310,7 @@ MACHINE_CONFIG_START(galaxia_state::galaxia) MCFG_SCREEN_VISIBLE_AREA(0*8, 30*8-1, 2*8, 32*8-1) MCFG_SCREEN_UPDATE_DRIVER(galaxia_state, screen_update_galaxia) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(galaxia_state, vblank_irq)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", galaxia) MCFG_PALETTE_ADD("palette", 0x18+2) @@ -339,7 +342,6 @@ MACHINE_CONFIG_START(galaxia_state::astrowar) MCFG_CPU_PROGRAM_MAP(astrowar_mem_map) MCFG_CPU_IO_MAP(galaxia_io_map) MCFG_CPU_DATA_MAP(galaxia_data_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", galaxia_state, galaxia_interrupt) MCFG_S2650_SENSE_INPUT(DEVREADLINE("screen", screen_device, vblank)) MCFG_S2650_FLAG_OUTPUT(WRITELINE(cvs_state, write_s2650_flag)) @@ -352,6 +354,7 @@ MACHINE_CONFIG_START(galaxia_state::astrowar) MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 2*8, 32*8-1) MCFG_SCREEN_UPDATE_DRIVER(galaxia_state, screen_update_astrowar) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(galaxia_state, vblank_irq)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", astrowar) MCFG_PALETTE_ADD("palette", 0x18+2) diff --git a/src/mame/includes/galaxia.h b/src/mame/includes/galaxia.h index 8be7601bfcb..bf65a808a0e 100644 --- a/src/mame/includes/galaxia.h +++ b/src/mame/includes/galaxia.h @@ -31,7 +31,7 @@ public: DECLARE_PALETTE_INIT(astrowar); uint32_t screen_update_galaxia(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_astrowar(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - INTERRUPT_GEN_MEMBER(galaxia_interrupt); + DECLARE_WRITE_LINE_MEMBER(vblank_irq); void init_common(); void astrowar(machine_config &config); void galaxia(machine_config &config); -- cgit v1.2.3 From 3a0f55c31d78e2ddc3ca194d48ceaa8b6cfb0e6c Mon Sep 17 00:00:00 2001 From: AJR Date: Wed, 28 Mar 2018 14:52:57 -0400 Subject: mappy.cpp: Use MCFG_SCREEN_VBLANK_CALLBACK instead of MCFG_CPU_VBLANK_INT (nw) --- src/mame/drivers/mappy.cpp | 23 ++++++++--------------- src/mame/includes/mappy.h | 4 +--- 2 files changed, 9 insertions(+), 18 deletions(-) diff --git a/src/mame/drivers/mappy.cpp b/src/mame/drivers/mappy.cpp index 690b6d3c679..3128cc35005 100644 --- a/src/mame/drivers/mappy.cpp +++ b/src/mame/drivers/mappy.cpp @@ -621,8 +621,11 @@ void mappy_state::device_timer(emu_timer &timer, device_timer_id id, int param, } } -INTERRUPT_GEN_MEMBER(mappy_state::main_vblank_irq) +WRITE_LINE_MEMBER(mappy_state::vblank_irq) { + if (!state) + return; + if (m_main_irq_mask) m_maincpu->set_input_line(0, ASSERT_LINE); @@ -631,17 +634,11 @@ INTERRUPT_GEN_MEMBER(mappy_state::main_vblank_irq) if (!m_namcoio[1]->read_reset_line()) // give the cpu a tiny bit of time to write the command before processing it timer_set(attotime::from_usec(50), TIMER_IO_RUN, 1); -} -INTERRUPT_GEN_MEMBER(mappy_state::sub_vblank_irq) -{ if (m_sub_irq_mask) m_subcpu->set_input_line(0, ASSERT_LINE); -} -INTERRUPT_GEN_MEMBER(mappy_state::sub2_vblank_irq) -{ - if (m_sub2_irq_mask) + if (m_subcpu2.found() && m_sub2_irq_mask) m_subcpu2->set_input_line(0, ASSERT_LINE); } @@ -1324,11 +1321,9 @@ MACHINE_CONFIG_START(mappy_state::superpac_common) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", MC6809E, PIXEL_CLOCK/4) /* 1.536 MHz */ MCFG_CPU_PROGRAM_MAP(superpac_cpu1_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", mappy_state, main_vblank_irq) // also update the custom I/O chips MCFG_CPU_ADD("sub", MC6809E, PIXEL_CLOCK/4) /* 1.536 MHz */ MCFG_CPU_PROGRAM_MAP(superpac_cpu2_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", mappy_state, sub_vblank_irq) MCFG_DEVICE_ADD("mainlatch", LS259, 0) // 2M on CPU board MCFG_ADDRESSABLE_LATCH_Q0_OUT_CB(WRITELINE(mappy_state, int_on_2_w)) @@ -1357,6 +1352,7 @@ MACHINE_CONFIG_START(mappy_state::superpac_common) MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART) MCFG_SCREEN_UPDATE_DRIVER(mappy_state, screen_update_superpac) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(mappy_state, vblank_irq)) // cause IRQs on both CPUs; also update the custom I/O chips MCFG_VIDEO_START_OVERRIDE(mappy_state,superpac) @@ -1436,15 +1432,12 @@ MACHINE_CONFIG_START(mappy_state::phozon) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", MC6809E, PIXEL_CLOCK/4) /* MAIN CPU */ MCFG_CPU_PROGRAM_MAP(phozon_cpu1_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", mappy_state, main_vblank_irq) // also update the custom I/O chips MCFG_CPU_ADD("sub", MC6809E, PIXEL_CLOCK/4) /* SOUND CPU */ MCFG_CPU_PROGRAM_MAP(phozon_cpu2_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", mappy_state, sub_vblank_irq) MCFG_CPU_ADD("sub2", MC6809E, PIXEL_CLOCK/4) /* SUB CPU */ MCFG_CPU_PROGRAM_MAP(phozon_cpu3_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", mappy_state, sub2_vblank_irq) MCFG_DEVICE_ADD("mainlatch", LS259, 0) // 5C MCFG_ADDRESSABLE_LATCH_Q0_OUT_CB(WRITELINE(mappy_state, int_on_2_w)) @@ -1487,6 +1480,7 @@ MACHINE_CONFIG_START(mappy_state::phozon) MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART) MCFG_SCREEN_UPDATE_DRIVER(mappy_state, screen_update_phozon) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(mappy_state, vblank_irq)) // cause IRQs on all three CPUs; also update the custom I/O chips MCFG_VIDEO_START_OVERRIDE(mappy_state,phozon) @@ -1504,11 +1498,9 @@ MACHINE_CONFIG_START(mappy_state::mappy_common) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", MC6809E, PIXEL_CLOCK/4) /* 1.536 MHz */ MCFG_CPU_PROGRAM_MAP(mappy_cpu1_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", mappy_state, main_vblank_irq) // also update the custom I/O chips MCFG_CPU_ADD("sub", MC6809E, PIXEL_CLOCK/4) /* 1.536 MHz */ MCFG_CPU_PROGRAM_MAP(mappy_cpu2_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", mappy_state, sub_vblank_irq) MCFG_DEVICE_ADD("mainlatch", LS259, 0) // 2M on CPU board MCFG_ADDRESSABLE_LATCH_Q0_OUT_CB(WRITELINE(mappy_state, int_on_2_w)) @@ -1538,6 +1530,7 @@ MACHINE_CONFIG_START(mappy_state::mappy_common) MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART) MCFG_SCREEN_UPDATE_DRIVER(mappy_state, screen_update_mappy) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(mappy_state, vblank_irq)) // cause IRQs on both CPUs; also update the custom I/O chips MCFG_VIDEO_START_OVERRIDE(mappy_state,mappy) diff --git a/src/mame/includes/mappy.h b/src/mame/includes/mappy.h index 7e5dcb1e52a..73502e33da8 100644 --- a/src/mame/includes/mappy.h +++ b/src/mame/includes/mappy.h @@ -74,9 +74,7 @@ public: uint32_t screen_update_superpac(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_phozon(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_mappy(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - INTERRUPT_GEN_MEMBER(main_vblank_irq); - INTERRUPT_GEN_MEMBER(sub_vblank_irq); - INTERRUPT_GEN_MEMBER(sub2_vblank_irq); + DECLARE_WRITE_LINE_MEMBER(vblank_irq); DECLARE_DRIVER_INIT(grobda); DECLARE_DRIVER_INIT(digdug2); void mappy_draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, uint8_t *spriteram_base); -- cgit v1.2.3 From f39d7df5fee0ff360bc127403c0a6d20131bf0e0 Mon Sep 17 00:00:00 2001 From: AJR Date: Wed, 28 Mar 2018 15:04:11 -0400 Subject: xyonix: Acknowledge main interrupt (nw) --- src/mame/drivers/xyonix.cpp | 23 +++++++++++++++++++++-- src/mame/includes/xyonix.h | 4 ++++ 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/src/mame/drivers/xyonix.cpp b/src/mame/drivers/xyonix.cpp index 5da65c3d129..5a23a6186a8 100644 --- a/src/mame/drivers/xyonix.cpp +++ b/src/mame/drivers/xyonix.cpp @@ -36,6 +36,12 @@ void xyonix_state::machine_start() save_item(NAME(m_credits)); save_item(NAME(m_coins)); save_item(NAME(m_prev_coin)); + save_item(NAME(m_nmi_mask)); +} + +void xyonix_state::machine_reset() +{ + m_nmi_mask = false; } WRITE8_MEMBER(xyonix_state::irqack_w) @@ -43,6 +49,19 @@ WRITE8_MEMBER(xyonix_state::irqack_w) m_maincpu->set_input_line(0, CLEAR_LINE); } +WRITE_LINE_MEMBER(xyonix_state::nmiclk_w) +{ + if (state && m_nmi_mask) + m_maincpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE); +} + +WRITE8_MEMBER(xyonix_state::nmiack_w) +{ + m_nmi_mask = BIT(data, 0); + if (!m_nmi_mask) + m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE); +} + /* Inputs ********************************************************************/ @@ -155,7 +174,7 @@ void xyonix_state::port_map(address_map &map) map.global_mask(0xff); map(0x20, 0x20).nopr().w("sn1", FUNC(sn76496_device::write)); /* SN76496 ready signal */ map(0x21, 0x21).nopr().w("sn2", FUNC(sn76496_device::write)); - map(0x40, 0x40).nopw(); /* NMI ack? */ + map(0x40, 0x40).w(this, FUNC(xyonix_state::nmiack_w)); map(0x50, 0x50).w(this, FUNC(xyonix_state::irqack_w)); map(0x60, 0x61).nopw(); /* mc6845 */ map(0xe0, 0xe0).rw(this, FUNC(xyonix_state::io_r), FUNC(xyonix_state::io_w)); @@ -232,7 +251,6 @@ MACHINE_CONFIG_START(xyonix_state::xyonix) MCFG_CPU_ADD("maincpu", Z80,16000000 / 4) /* 4 MHz ? */ MCFG_CPU_PROGRAM_MAP(main_map) MCFG_CPU_IO_MAP(port_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", xyonix_state, nmi_line_pulse) MCFG_CPU_PERIODIC_INT_DRIVER(xyonix_state, irq0_line_assert, 4*60) /* ?? controls music tempo */ /* video hardware */ @@ -243,6 +261,7 @@ MACHINE_CONFIG_START(xyonix_state::xyonix) MCFG_SCREEN_VISIBLE_AREA(0, 80*4-1, 0, 28*8-1) MCFG_SCREEN_UPDATE_DRIVER(xyonix_state, screen_update) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(xyonix_state, nmiclk_w)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", xyonix) MCFG_PALETTE_ADD("palette", 256) diff --git a/src/mame/includes/xyonix.h b/src/mame/includes/xyonix.h index d215abc1aa5..9ad40662e13 100644 --- a/src/mame/includes/xyonix.h +++ b/src/mame/includes/xyonix.h @@ -20,13 +20,17 @@ public: int m_credits; int m_coins; int m_prev_coin; + bool m_nmi_mask; + DECLARE_WRITE_LINE_MEMBER(nmiclk_w); DECLARE_WRITE8_MEMBER(irqack_w); + DECLARE_WRITE8_MEMBER(nmiack_w); DECLARE_READ8_MEMBER(io_r); DECLARE_WRITE8_MEMBER(io_w); DECLARE_WRITE8_MEMBER(vidram_w); virtual void machine_start() override; + virtual void machine_reset() override; virtual void video_start() override; TILE_GET_INFO_MEMBER(get_tile_info); DECLARE_PALETTE_INIT(xyonix); -- cgit v1.2.3 From 86167807063cd18b4d944ce62569d9cfd9cbbd46 Mon Sep 17 00:00:00 2001 From: AJR Date: Wed, 28 Mar 2018 15:13:45 -0400 Subject: toaplan1.cpp: Use MCFG_SCREEN_VBLANK_CALLBACK instead of MCFG_CPU_VBLANK_INT (nw) --- src/mame/drivers/toaplan1.cpp | 9 --------- src/mame/includes/toaplan1.h | 2 +- src/mame/machine/toaplan1.cpp | 4 ++-- src/mame/video/toaplan1.cpp | 3 +++ 4 files changed, 6 insertions(+), 12 deletions(-) diff --git a/src/mame/drivers/toaplan1.cpp b/src/mame/drivers/toaplan1.cpp index ffe0db02351..4144b29e5aa 100644 --- a/src/mame/drivers/toaplan1.cpp +++ b/src/mame/drivers/toaplan1.cpp @@ -1914,7 +1914,6 @@ MACHINE_CONFIG_START(toaplan1_rallybik_state::rallybik) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL(10'000'000)) MCFG_CPU_PROGRAM_MAP(rallybik_main_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", toaplan1_state, toaplan1_interrupt) MCFG_CPU_ADD("audiocpu", Z80, XTAL(28'000'000)/8) MCFG_CPU_PROGRAM_MAP(toaplan1_sound_map) @@ -1960,7 +1959,6 @@ MACHINE_CONFIG_START(toaplan1_state::truxton) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL(10'000'000)) MCFG_CPU_PROGRAM_MAP(truxton_main_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", toaplan1_state, toaplan1_interrupt) MCFG_CPU_ADD("audiocpu", Z80, XTAL(28'000'000)/8) MCFG_CPU_PROGRAM_MAP(toaplan1_sound_map) @@ -1998,7 +1996,6 @@ MACHINE_CONFIG_START(toaplan1_state::hellfire) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL(10'000'000)) MCFG_CPU_PROGRAM_MAP(hellfire_main_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", toaplan1_state, toaplan1_interrupt) MCFG_CPU_ADD("audiocpu", Z80, XTAL(28'000'000)/8) MCFG_CPU_PROGRAM_MAP(toaplan1_sound_map) @@ -2036,7 +2033,6 @@ MACHINE_CONFIG_START(toaplan1_state::zerowing) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL(10'000'000)) MCFG_CPU_PROGRAM_MAP(zerowing_main_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", toaplan1_state, toaplan1_interrupt) MCFG_CPU_ADD("audiocpu", Z80, XTAL(28'000'000)/8) MCFG_CPU_PROGRAM_MAP(toaplan1_sound_map) @@ -2074,7 +2070,6 @@ MACHINE_CONFIG_START(toaplan1_state::demonwld) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL(10'000'000)) MCFG_CPU_PROGRAM_MAP(demonwld_main_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", toaplan1_state, toaplan1_interrupt) MCFG_CPU_ADD("audiocpu", Z80, XTAL(28'000'000)/8) MCFG_CPU_PROGRAM_MAP(toaplan1_sound_map) @@ -2117,7 +2112,6 @@ MACHINE_CONFIG_START(toaplan1_state::samesame) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL(10'000'000)) MCFG_CPU_PROGRAM_MAP(samesame_main_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", toaplan1_state, toaplan1_interrupt) MCFG_CPU_ADD("audiocpu", Z180, XTAL(28'000'000)/8) /* HD647180XOFS6 CPU */ MCFG_CPU_PROGRAM_MAP(samesame_hd647180_mem_map) @@ -2155,7 +2149,6 @@ MACHINE_CONFIG_START(toaplan1_state::outzone) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL(10'000'000)) MCFG_CPU_PROGRAM_MAP(outzone_main_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", toaplan1_state, toaplan1_interrupt) MCFG_CPU_ADD("audiocpu", Z80, XTAL(28'000'000)/8) MCFG_CPU_PROGRAM_MAP(toaplan1_sound_map) @@ -2193,7 +2186,6 @@ MACHINE_CONFIG_START(toaplan1_state::outzonecv) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL(10'000'000)) MCFG_CPU_PROGRAM_MAP(outzonecv_main_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", toaplan1_state, toaplan1_interrupt) MCFG_CPU_ADD("audiocpu", Z80, XTAL(28'000'000)/8) MCFG_CPU_PROGRAM_MAP(toaplan1_sound_map) @@ -2231,7 +2223,6 @@ MACHINE_CONFIG_START(toaplan1_state::vimana) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL(10'000'000)) /* verified on pcb */ MCFG_CPU_PROGRAM_MAP(vimana_main_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", toaplan1_state, toaplan1_interrupt) MCFG_CPU_ADD("audiocpu", Z180, XTAL(28'000'000)/8) /* HD647180XOFS6 CPU */ MCFG_CPU_PROGRAM_MAP(vimana_hd647180_mem_map) diff --git a/src/mame/includes/toaplan1.h b/src/mame/includes/toaplan1.h index 0852639f980..f1bf33cb6e9 100644 --- a/src/mame/includes/toaplan1.h +++ b/src/mame/includes/toaplan1.h @@ -142,7 +142,7 @@ public: DECLARE_WRITE_LINE_MEMBER(screen_vblank_toaplan1); DECLARE_WRITE_LINE_MEMBER(screen_vblank_samesame); - INTERRUPT_GEN_MEMBER(toaplan1_interrupt); + void toaplan1_interrupt(); void demonwld_restore_dsp(); void toaplan1_create_tilemaps(); diff --git a/src/mame/machine/toaplan1.cpp b/src/mame/machine/toaplan1.cpp index 1c87fe201ce..6de67320533 100644 --- a/src/mame/machine/toaplan1.cpp +++ b/src/mame/machine/toaplan1.cpp @@ -12,10 +12,10 @@ #include "includes/toaplan1.h" -INTERRUPT_GEN_MEMBER(toaplan1_state::toaplan1_interrupt) +void toaplan1_state::toaplan1_interrupt() { if (m_intenable) - device.execute().set_input_line(4, HOLD_LINE); + m_maincpu->set_input_line(4, HOLD_LINE); } WRITE16_MEMBER(toaplan1_state::toaplan1_intenable_w) diff --git a/src/mame/video/toaplan1.cpp b/src/mame/video/toaplan1.cpp index db50ee4b8b7..190b0a5c6f5 100644 --- a/src/mame/video/toaplan1.cpp +++ b/src/mame/video/toaplan1.cpp @@ -993,6 +993,7 @@ WRITE_LINE_MEMBER(toaplan1_rallybik_state::screen_vblank_rallybik) if (state) { memcpy(m_buffered_spriteram.get(), m_spriteram, m_spriteram.bytes()); + toaplan1_interrupt(); } } @@ -1003,6 +1004,7 @@ WRITE_LINE_MEMBER(toaplan1_state::screen_vblank_toaplan1) { memcpy(m_buffered_spriteram.get(), m_spriteram, m_spriteram.bytes()); memcpy(m_buffered_spritesizeram16.get(), m_spritesizeram16.get(), TOAPLAN1_SPRITESIZERAM_SIZE); + toaplan1_interrupt(); } } @@ -1013,6 +1015,7 @@ WRITE_LINE_MEMBER(toaplan1_state::screen_vblank_samesame) { memcpy(m_buffered_spriteram.get(), m_spriteram, m_spriteram.bytes()); memcpy(m_buffered_spritesizeram16.get(), m_spritesizeram16.get(), TOAPLAN1_SPRITESIZERAM_SIZE); + toaplan1_interrupt(); m_maincpu->set_input_line(M68K_IRQ_2, HOLD_LINE); /* Frame done */ } } -- cgit v1.2.3 From 9778b8a415dd11be0a534af192331c8b5ff9c5ec Mon Sep 17 00:00:00 2001 From: AJR Date: Wed, 28 Mar 2018 15:20:15 -0400 Subject: aeroboto: Use MCFG_SCREEN_VBLANK_CALLBACK instead of MCFG_CPU_VBLANK_INT (nw) --- src/mame/drivers/aeroboto.cpp | 19 +++++++++++-------- src/mame/includes/aeroboto.h | 4 +++- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/src/mame/drivers/aeroboto.cpp b/src/mame/drivers/aeroboto.cpp index 34c54bcaa97..0261028d45b 100644 --- a/src/mame/drivers/aeroboto.cpp +++ b/src/mame/drivers/aeroboto.cpp @@ -47,12 +47,17 @@ READ8_MEMBER(aeroboto_state::aeroboto_201_r) } -INTERRUPT_GEN_MEMBER(aeroboto_state::aeroboto_interrupt) +WRITE_LINE_MEMBER(aeroboto_state::vblank_irq) { - if (!m_disable_irq) - device.execute().set_input_line(0, ASSERT_LINE); - else - m_disable_irq--; + if (state) + { + if (!m_disable_irq) + m_maincpu->set_input_line(0, ASSERT_LINE); + else + m_disable_irq--; + + m_audiocpu->set_input_line(0, HOLD_LINE); + } } READ8_MEMBER(aeroboto_state::aeroboto_irq_ack_r) @@ -244,12 +249,9 @@ MACHINE_CONFIG_START(aeroboto_state::formatz) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", MC6809, XTAL(10'000'000)/2) /* verified on pcb */ MCFG_CPU_PROGRAM_MAP(main_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", aeroboto_state, aeroboto_interrupt) MCFG_CPU_ADD("audiocpu", MC6809, XTAL(10'000'000)/4) /* verified on pcb */ MCFG_CPU_PROGRAM_MAP(sound_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", aeroboto_state, irq0_line_hold) - /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) @@ -259,6 +261,7 @@ MACHINE_CONFIG_START(aeroboto_state::formatz) MCFG_SCREEN_VISIBLE_AREA(0*8, 31*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(aeroboto_state, screen_update_aeroboto) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(aeroboto_state, vblank_irq)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", aeroboto) diff --git a/src/mame/includes/aeroboto.h b/src/mame/includes/aeroboto.h index c70131dcf77..edbe2087dd4 100644 --- a/src/mame/includes/aeroboto.h +++ b/src/mame/includes/aeroboto.h @@ -21,6 +21,7 @@ public: m_stary(*this, "stary"), m_bgcolor(*this, "bgcolor"), m_maincpu(*this, "maincpu"), + m_audiocpu(*this, "audiocpu"), m_gfxdecode(*this, "gfxdecode"), m_palette(*this, "palette") { } @@ -64,9 +65,10 @@ public: virtual void machine_reset() override; virtual void video_start() override; uint32_t screen_update_aeroboto(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - INTERRUPT_GEN_MEMBER(aeroboto_interrupt); + DECLARE_WRITE_LINE_MEMBER(vblank_irq); void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect ); required_device m_maincpu; + required_device m_audiocpu; required_device m_gfxdecode; required_device m_palette; void formatz(machine_config &config); -- cgit v1.2.3 From 80f816889ddb70a53e6ccd068826902210a881a2 Mon Sep 17 00:00:00 2001 From: AJR Date: Wed, 28 Mar 2018 15:24:26 -0400 Subject: zaccaria.cpp: Use MCFG_SCREEN_VBLANK_CALLBACK instead of MCFG_CPU_VBLANK_INT (nw) --- src/mame/drivers/zaccaria.cpp | 9 +++++---- src/mame/includes/zaccaria.h | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/mame/drivers/zaccaria.cpp b/src/mame/drivers/zaccaria.cpp index 49c033c1888..834eeb1a240 100644 --- a/src/mame/drivers/zaccaria.cpp +++ b/src/mame/drivers/zaccaria.cpp @@ -324,10 +324,10 @@ static GFXDECODE_START( zaccaria ) GFXDECODE_END -INTERRUPT_GEN_MEMBER(zaccaria_state::vblank_irq) +WRITE_LINE_MEMBER(zaccaria_state::vblank_irq) { - if (m_nmi_mask) - device.execute().set_input_line(INPUT_LINE_NMI, ASSERT_LINE); + if (state && m_nmi_mask) + m_maincpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE); } @@ -336,7 +336,7 @@ MACHINE_CONFIG_START(zaccaria_state::zaccaria) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,XTAL(18'432'000)/6) /* verified on pcb */ MCFG_CPU_PROGRAM_MAP(main_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", zaccaria_state, vblank_irq) + // MCFG_QUANTUM_TIME(attotime::from_hz(1000000)) MCFG_WATCHDOG_ADD("watchdog") @@ -362,6 +362,7 @@ MACHINE_CONFIG_START(zaccaria_state::zaccaria) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(zaccaria_state, screen_update) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(zaccaria_state, vblank_irq)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", zaccaria) MCFG_PALETTE_ADD("palette", 32*8+32*8) diff --git a/src/mame/includes/zaccaria.h b/src/mame/includes/zaccaria.h index 23b5979088b..c606a7c9dd6 100644 --- a/src/mame/includes/zaccaria.h +++ b/src/mame/includes/zaccaria.h @@ -34,7 +34,7 @@ public: virtual void video_start() override; DECLARE_PALETTE_INIT(zaccaria); uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - INTERRUPT_GEN_MEMBER(vblank_irq); + DECLARE_WRITE_LINE_MEMBER(vblank_irq); void draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect,uint8_t *spriteram,int color,int section); void zaccaria(machine_config &config); -- cgit v1.2.3 From 0fdbfe6640bf591d18cd2aee41870b9d0dc6585b Mon Sep 17 00:00:00 2001 From: AJR Date: Wed, 28 Mar 2018 15:28:51 -0400 Subject: pbillian: Use MCFG_SCREEN_VBLANK_CALLBACK instead of MCFG_CPU_VBLANK_INT (nw) --- src/mame/drivers/superqix.cpp | 8 ++++---- src/mame/includes/superqix.h | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/mame/drivers/superqix.cpp b/src/mame/drivers/superqix.cpp index ee0e14b9ced..be745232e3b 100644 --- a/src/mame/drivers/superqix.cpp +++ b/src/mame/drivers/superqix.cpp @@ -1336,10 +1336,10 @@ static GFXDECODE_START( sqix ) GFXDECODE_END -INTERRUPT_GEN_MEMBER(hotsmash_state::vblank_irq) +WRITE_LINE_MEMBER(hotsmash_state::vblank_irq) { - if (m_nmi_mask) - device.execute().set_input_line(INPUT_LINE_NMI, ASSERT_LINE); + if (state && m_nmi_mask) + m_maincpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE); } INTERRUPT_GEN_MEMBER(superqix_state::sqix_timer_irq) @@ -1354,7 +1354,6 @@ MACHINE_CONFIG_START(hotsmash_state::pbillian) MCFG_CPU_ADD("maincpu", Z80,XTAL(12'000'000)/2) /* 6 MHz, ROHM Z80B */ MCFG_CPU_PROGRAM_MAP(main_map) MCFG_CPU_IO_MAP(pbillian_port_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", hotsmash_state, vblank_irq) MCFG_CPU_ADD("mcu", M68705P5, XTAL(12'000'000)/4) /* 3mhz???? */ MCFG_M68705_PORTA_R_CB(READ8(hotsmash_state, hotsmash_68705_portA_r)) @@ -1372,6 +1371,7 @@ MACHINE_CONFIG_START(hotsmash_state::pbillian) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(hotsmash_state, screen_update_pbillian) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(hotsmash_state, vblank_irq)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", pbillian) MCFG_PALETTE_ADD("palette", 512) diff --git a/src/mame/includes/superqix.h b/src/mame/includes/superqix.h index a08c59324ec..419d9076ac2 100644 --- a/src/mame/includes/superqix.h +++ b/src/mame/includes/superqix.h @@ -148,7 +148,7 @@ public: DECLARE_WRITE8_MEMBER(pbillian_0410_w); DECLARE_CUSTOM_INPUT_MEMBER(pbillian_semaphore_input_r); - INTERRUPT_GEN_MEMBER(vblank_irq); + DECLARE_WRITE_LINE_MEMBER(vblank_irq); SAMPLES_START_CB_MEMBER(pbillian_sh_start); -- cgit v1.2.3 From 9b304fb12288d9c05ebc0b3c860ee0332bb04f48 Mon Sep 17 00:00:00 2001 From: AJR Date: Wed, 28 Mar 2018 15:35:50 -0400 Subject: ninjakd2.cpp, xmissio.cpp: Use MCFG_SCREEN_VBLANK_CALLBACK instead of MCFG_CPU_VBLANK_INT (nw) --- src/mame/drivers/ninjakd2.cpp | 6 ------ src/mame/drivers/xxmissio.cpp | 11 +++++++---- src/mame/includes/ninjakd2.h | 1 - src/mame/includes/xxmissio.h | 2 +- src/mame/video/ninjakd2.cpp | 2 ++ 5 files changed, 10 insertions(+), 12 deletions(-) diff --git a/src/mame/drivers/ninjakd2.cpp b/src/mame/drivers/ninjakd2.cpp index 7e4711e904b..7f683452c5c 100644 --- a/src/mame/drivers/ninjakd2.cpp +++ b/src/mame/drivers/ninjakd2.cpp @@ -900,11 +900,6 @@ GFXDECODE_END * *************************************/ -INTERRUPT_GEN_MEMBER(ninjakd2_state::ninjakd2_interrupt) -{ - device.execute().set_input_line_and_vector(0, HOLD_LINE, 0xd7); /* RST 10h */ -} - void ninjakd2_state::machine_start() { } @@ -940,7 +935,6 @@ MACHINE_CONFIG_START(ninjakd2_state::ninjakd2_core) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, MAIN_CLOCK_12/2) /* verified */ MCFG_CPU_PROGRAM_MAP(ninjakd2_main_cpu) - MCFG_CPU_VBLANK_INT_DRIVER("screen", ninjakd2_state, ninjakd2_interrupt) MCFG_CPU_ADD("soundcpu", Z80, MAIN_CLOCK_5) /* verified */ MCFG_CPU_PROGRAM_MAP(ninjakd2_sound_cpu) diff --git a/src/mame/drivers/xxmissio.cpp b/src/mame/drivers/xxmissio.cpp index c0be4a065a4..d85ea21175a 100644 --- a/src/mame/drivers/xxmissio.cpp +++ b/src/mame/drivers/xxmissio.cpp @@ -68,10 +68,13 @@ WRITE8_MEMBER(xxmissio_state::status_s_w) } } -INTERRUPT_GEN_MEMBER(xxmissio_state::interrupt_m) +WRITE_LINE_MEMBER(xxmissio_state::interrupt_m) { - m_status &= ~0x20; - m_maincpu->set_input_line(0, HOLD_LINE); + if (state) + { + m_status &= ~0x20; + m_maincpu->set_input_line(0, HOLD_LINE); + } } INTERRUPT_GEN_MEMBER(xxmissio_state::interrupt_s) @@ -267,7 +270,6 @@ MACHINE_CONFIG_START(xxmissio_state::xxmissio) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,12000000/4) /* 3.0MHz */ MCFG_CPU_PROGRAM_MAP(map1) - MCFG_CPU_VBLANK_INT_DRIVER("screen", xxmissio_state, interrupt_m) MCFG_CPU_ADD("sub", Z80,12000000/4) /* 3.0MHz */ MCFG_CPU_PROGRAM_MAP(map2) @@ -283,6 +285,7 @@ MACHINE_CONFIG_START(xxmissio_state::xxmissio) MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 4*8, 28*8-1) MCFG_SCREEN_UPDATE_DRIVER(xxmissio_state, screen_update) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(xxmissio_state, interrupt_m)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", xxmissio) MCFG_PALETTE_ADD("palette", 768) diff --git a/src/mame/includes/ninjakd2.h b/src/mame/includes/ninjakd2.h index 531bb1ffafb..8a9a8f6acd2 100644 --- a/src/mame/includes/ninjakd2.h +++ b/src/mame/includes/ninjakd2.h @@ -116,7 +116,6 @@ public: uint32_t screen_update_robokid(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_omegaf(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); DECLARE_WRITE_LINE_MEMBER(screen_vblank_ninjakd2); - INTERRUPT_GEN_MEMBER(ninjakd2_interrupt); void robokid_get_bg_tile_info( tile_data& tileinfo, tilemap_memory_index const tile_index, int const gfxnum, const uint8_t* const videoram); void bg_ctrl(int offset, int data, tilemap_t* tilemap); void draw_sprites( bitmap_ind16 &bitmap); diff --git a/src/mame/includes/xxmissio.h b/src/mame/includes/xxmissio.h index d64904b2767..d021b99954a 100644 --- a/src/mame/includes/xxmissio.h +++ b/src/mame/includes/xxmissio.h @@ -40,7 +40,7 @@ public: DECLARE_CUSTOM_INPUT_MEMBER(status_r); - INTERRUPT_GEN_MEMBER(interrupt_m); + DECLARE_WRITE_LINE_MEMBER(interrupt_m); INTERRUPT_GEN_MEMBER(interrupt_s); TILE_GET_INFO_MEMBER(get_bg_tile_info); diff --git a/src/mame/video/ninjakd2.cpp b/src/mame/video/ninjakd2.cpp index 9579b240a0a..67f8d547475 100644 --- a/src/mame/video/ninjakd2.cpp +++ b/src/mame/video/ninjakd2.cpp @@ -516,5 +516,7 @@ WRITE_LINE_MEMBER(ninjakd2_state::screen_vblank_ninjakd2) update_sprites(); m_sprites_updated = 0; + + m_maincpu->set_input_line_and_vector(0, HOLD_LINE, 0xd7); /* RST 10h */ } } -- cgit v1.2.3 From cb354b3109a8c72bf84df9c5f91c135b2138ec20 Mon Sep 17 00:00:00 2001 From: AJR Date: Wed, 28 Mar 2018 15:42:54 -0400 Subject: cubeqst: Use MCFG_SCREEN_VBLANK_CALLBACK instead of MCFG_CPU_VBLANK_INT (nw) --- src/mame/drivers/cubeqst.cpp | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/mame/drivers/cubeqst.cpp b/src/mame/drivers/cubeqst.cpp index 265d2775488..a6b2d534e90 100644 --- a/src/mame/drivers/cubeqst.cpp +++ b/src/mame/drivers/cubeqst.cpp @@ -34,6 +34,7 @@ public: cubeqst_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), m_laserdisc(*this, "laserdisc"), + m_maincpu(*this, "main_cpu"), m_rotatecpu(*this, "rotate_cpu"), m_linecpu(*this, "line_cpu"), m_soundcpu(*this, "sound_cpu"), @@ -57,6 +58,7 @@ public: uint8_t m_io_latch; uint8_t m_reset_latch; required_device m_laserdisc; + required_device m_maincpu; required_device m_rotatecpu; required_device m_linecpu; required_device m_soundcpu; @@ -83,7 +85,7 @@ public: virtual void machine_reset() override; virtual void video_start() override; uint32_t screen_update_cubeqst(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); - INTERRUPT_GEN_MEMBER(vblank); + DECLARE_WRITE_LINE_MEMBER(vblank_irq); TIMER_CALLBACK_MEMBER(delayed_bank_swap); void swap_linecpu_banks(); void cubeqst(machine_config &config); @@ -207,14 +209,17 @@ READ16_MEMBER(cubeqst_state::line_r) return m_screen->vpos(); } -INTERRUPT_GEN_MEMBER(cubeqst_state::vblank) +WRITE_LINE_MEMBER(cubeqst_state::vblank_irq) { - int int_level = m_video_field == 0 ? 5 : 6; + if (state) + { + int int_level = m_video_field == 0 ? 5 : 6; - device.execute().set_input_line(int_level, HOLD_LINE); + m_maincpu->set_input_line(int_level, HOLD_LINE); - /* Update the laserdisc */ - m_video_field ^= 1; + /* Update the laserdisc */ + m_video_field ^= 1; + } } @@ -522,7 +527,6 @@ WRITE16_MEMBER( cubeqst_state::sound_dac_w ) MACHINE_CONFIG_START(cubeqst_state::cubeqst) MCFG_CPU_ADD("main_cpu", M68000, XTAL(16'000'000) / 2) MCFG_CPU_PROGRAM_MAP(m68k_program_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", cubeqst_state, vblank) MCFG_CPU_ADD("rotate_cpu", CQUESTROT, XTAL(10'000'000) / 2) MCFG_CPU_PROGRAM_MAP(rotate_map) @@ -547,7 +551,7 @@ MACHINE_CONFIG_START(cubeqst_state::cubeqst) MCFG_LASERDISC_OVERLAY_SCALE(1.0f, 1.030f) MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", "laserdisc") - + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(cubeqst_state, vblank_irq)) MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") -- cgit v1.2.3 From 9976426baf185d5d3db2811ad7395e9b8a6656eb Mon Sep 17 00:00:00 2001 From: AJR Date: Wed, 28 Mar 2018 16:03:24 -0400 Subject: brkthru.cpp: Use MCFG_SCREEN_VBLANK_CALLBACK instead of MCFG_CPU_VBLANK_INT (nw) --- src/mame/drivers/brkthru.cpp | 10 +++++----- src/mame/includes/brkthru.h | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/mame/drivers/brkthru.cpp b/src/mame/drivers/brkthru.cpp index 8f161310042..3c389b6375d 100644 --- a/src/mame/drivers/brkthru.cpp +++ b/src/mame/drivers/brkthru.cpp @@ -367,10 +367,10 @@ void brkthru_state::machine_reset() m_nmi_mask = 0; } -INTERRUPT_GEN_MEMBER(brkthru_state::vblank_irq) +WRITE_LINE_MEMBER(brkthru_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, PULSE_LINE); } MACHINE_CONFIG_START(brkthru_state::brkthru) @@ -378,7 +378,6 @@ MACHINE_CONFIG_START(brkthru_state::brkthru) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", MC6809E, MASTER_CLOCK/8) /* 1.5 MHz ? */ MCFG_CPU_PROGRAM_MAP(brkthru_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", brkthru_state, vblank_irq) MCFG_CPU_ADD("audiocpu", MC6809, MASTER_CLOCK/2) /* 1.5 MHz ? */ MCFG_CPU_PROGRAM_MAP(sound_map) @@ -395,6 +394,7 @@ MACHINE_CONFIG_START(brkthru_state::brkthru) MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK/2, 384, 8, 248, 272, 8, 248) MCFG_SCREEN_UPDATE_DRIVER(brkthru_state, screen_update_brkthru) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(brkthru_state, vblank_irq)) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") @@ -419,7 +419,6 @@ MACHINE_CONFIG_START(brkthru_state::darwin) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6809, MASTER_CLOCK/8) /* 1.5 MHz ? */ MCFG_CPU_PROGRAM_MAP(darwin_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", brkthru_state, vblank_irq) MCFG_CPU_ADD("audiocpu", M6809, MASTER_CLOCK/8) /* 1.5 MHz ? */ MCFG_CPU_PROGRAM_MAP(sound_map) @@ -447,6 +446,7 @@ MACHINE_CONFIG_START(brkthru_state::darwin) tuned by Shingo SUZUKI(VSyncMAME Project) 2000/10/19 */ MCFG_SCREEN_UPDATE_DRIVER(brkthru_state, screen_update_brkthru) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(brkthru_state, vblank_irq)) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") diff --git a/src/mame/includes/brkthru.h b/src/mame/includes/brkthru.h index 8e5944e118c..296b4442086 100644 --- a/src/mame/includes/brkthru.h +++ b/src/mame/includes/brkthru.h @@ -56,7 +56,7 @@ public: virtual void video_start() override; DECLARE_PALETTE_INIT(brkthru); uint32_t screen_update_brkthru(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - INTERRUPT_GEN_MEMBER(vblank_irq); + DECLARE_WRITE_LINE_MEMBER(vblank_irq); void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect, int prio ); void brkthru(machine_config &config); void darwin(machine_config &config); -- cgit v1.2.3 From f19a46cfdb4671134bc6e939390a560dff95d822 Mon Sep 17 00:00:00 2001 From: AJR Date: Wed, 28 Mar 2018 16:15:37 -0400 Subject: ddayjlc: Use MCFG_SCREEN_VBLANK_CALLBACK instead of MCFG_CPU_VBLANK_INT (nw) --- src/mame/drivers/ddayjlc.cpp | 35 +++++++++++++++++------------------ 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/src/mame/drivers/ddayjlc.cpp b/src/mame/drivers/ddayjlc.cpp index 097021b99fa..a27010fb06f 100644 --- a/src/mame/drivers/ddayjlc.cpp +++ b/src/mame/drivers/ddayjlc.cpp @@ -102,8 +102,7 @@ public: TILE_GET_INFO_MEMBER(get_tile_info_fg); DECLARE_PALETTE_INIT(ddayjlc); uint32_t screen_update_ddayjlc(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - INTERRUPT_GEN_MEMBER(ddayjlc_interrupt); - INTERRUPT_GEN_MEMBER(ddayjlc_snd_interrupt); + DECLARE_WRITE_LINE_MEMBER(vblank_irq); void ddayjlc(machine_config &config); void main_map(address_map &map); void sound_map(address_map &map); @@ -127,8 +126,8 @@ private: int32_t m_bgadr; /* misc */ - int32_t m_sound_nmi_enable; - int32_t m_main_nmi_enable; + bool m_sound_nmi_enable; + bool m_main_nmi_enable; int32_t m_e00x_l[4]; int32_t m_e00x_d[4][2]; uint8_t m_prot_addr; @@ -313,12 +312,16 @@ WRITE8_MEMBER(ddayjlc_state::vram_w) WRITE8_MEMBER(ddayjlc_state::sound_nmi_w) { - m_sound_nmi_enable = data; + m_sound_nmi_enable = BIT(data, 0); + if (!m_sound_nmi_enable) + m_audiocpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE); } WRITE8_MEMBER(ddayjlc_state::main_nmi_w) { - m_main_nmi_enable = data; + m_main_nmi_enable = BIT(data, 0); + if (!m_main_nmi_enable) + m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE); } WRITE8_MEMBER(ddayjlc_state::bg0_w) @@ -517,16 +520,13 @@ static GFXDECODE_START( ddayjlc ) GFXDECODE_ENTRY( "gfx3", 0, charlayout, 0x100, 16 ) GFXDECODE_END -INTERRUPT_GEN_MEMBER(ddayjlc_state::ddayjlc_interrupt) +WRITE_LINE_MEMBER(ddayjlc_state::vblank_irq) { - if(m_main_nmi_enable) - device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE); -} + if (state && m_main_nmi_enable) + m_maincpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE); -INTERRUPT_GEN_MEMBER(ddayjlc_state::ddayjlc_snd_interrupt) -{ - if(m_sound_nmi_enable) - device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE); + if (state && m_sound_nmi_enable) + m_audiocpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE); } @@ -551,8 +551,8 @@ void ddayjlc_state::machine_reset() m_char_bank = 0; m_bgadr = 0; - m_sound_nmi_enable = 0; - m_main_nmi_enable = 0; + m_sound_nmi_enable = false; + m_main_nmi_enable = false; m_prot_addr = 0; for (i = 0; i < 4; i++) @@ -601,11 +601,9 @@ MACHINE_CONFIG_START(ddayjlc_state::ddayjlc) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80,12000000/3) MCFG_CPU_PROGRAM_MAP(main_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", ddayjlc_state, ddayjlc_interrupt) MCFG_CPU_ADD("audiocpu", Z80, 12000000/4) MCFG_CPU_PROGRAM_MAP(sound_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", ddayjlc_state, ddayjlc_snd_interrupt) MCFG_QUANTUM_TIME(attotime::from_hz(6000)) @@ -617,6 +615,7 @@ MACHINE_CONFIG_START(ddayjlc_state::ddayjlc) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(ddayjlc_state, screen_update_ddayjlc) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(ddayjlc_state, vblank_irq)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", ddayjlc) MCFG_PALETTE_ADD("palette", 0x200+4) -- cgit v1.2.3 From 7d411bb07620f8a43e53f5adcef72d6152e68107 Mon Sep 17 00:00:00 2001 From: AJR Date: Wed, 28 Mar 2018 16:22:35 -0400 Subject: bombjack: Use MCFG_SCREEN_VBLANK_CALLBACK instead of MCFG_CPU_VBLANK_INT (nw) --- src/mame/drivers/bombjack.cpp | 16 ++++++++++------ src/mame/includes/bombjack.h | 4 ++-- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/mame/drivers/bombjack.cpp b/src/mame/drivers/bombjack.cpp index fd188f131ad..6b3485bf4a1 100644 --- a/src/mame/drivers/bombjack.cpp +++ b/src/mame/drivers/bombjack.cpp @@ -125,7 +125,9 @@ READ8_MEMBER(bombjack_state::soundlatch_read_and_clear) WRITE8_MEMBER(bombjack_state::irq_mask_w) { - m_nmi_mask = data & 1; + m_nmi_mask = BIT(data, 0); + if (!m_nmi_mask) + m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE); } void bombjack_state::main_map(address_map &map) @@ -330,19 +332,21 @@ GFXDECODE_END void bombjack_state::machine_start() { save_item(NAME(m_background_image)); + save_item(NAME(m_nmi_mask)); } void bombjack_state::machine_reset() { m_background_image = 0; + m_nmi_mask = false; } -INTERRUPT_GEN_MEMBER(bombjack_state::vblank_irq) +WRITE_LINE_MEMBER(bombjack_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); } MACHINE_CONFIG_START(bombjack_state::bombjack) @@ -350,12 +354,10 @@ MACHINE_CONFIG_START(bombjack_state::bombjack) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL(4'000'000)) /* Confirmed from PCB */ MCFG_CPU_PROGRAM_MAP(main_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", bombjack_state, vblank_irq) MCFG_CPU_ADD("audiocpu", Z80, XTAL(12'000'000)/4) /* Confirmed from PCB */ MCFG_CPU_PROGRAM_MAP(audio_map) MCFG_CPU_IO_MAP(audio_io_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", bombjack_state, nmi_line_pulse) MCFG_GENERIC_LATCH_8_ADD("soundlatch") @@ -367,6 +369,8 @@ MACHINE_CONFIG_START(bombjack_state::bombjack) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) MCFG_SCREEN_UPDATE_DRIVER(bombjack_state, screen_update_bombjack) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(bombjack_state, vblank_irq)) + MCFG_DEVCB_CHAIN_OUTPUT(INPUTLINE("audiocpu", INPUT_LINE_NMI)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", bombjack) MCFG_PALETTE_ADD("palette", 128) diff --git a/src/mame/includes/bombjack.h b/src/mame/includes/bombjack.h index 7c044932529..d75009faaf9 100644 --- a/src/mame/includes/bombjack.h +++ b/src/mame/includes/bombjack.h @@ -33,7 +33,7 @@ public: virtual void machine_reset() override; virtual void video_start() override; uint32_t screen_update_bombjack(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - INTERRUPT_GEN_MEMBER(vblank_irq); + DECLARE_WRITE_LINE_MEMBER(vblank_irq); TIMER_CALLBACK_MEMBER(soundlatch_callback); void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect ); @@ -52,7 +52,7 @@ private: tilemap_t *m_bg_tilemap; uint8_t m_background_image; - uint8_t m_nmi_mask; + bool m_nmi_mask; required_device m_maincpu; required_device m_gfxdecode; -- cgit v1.2.3 From fbf79fe9460a2236be1c6791461661a6c611931a Mon Sep 17 00:00:00 2001 From: AJR Date: Wed, 28 Mar 2018 16:36:48 -0400 Subject: goldnpkr: Use MC6845 sync callback instead of MCFG_CPU_VBLANK_INT (nw) --- src/mame/drivers/goldnpkr.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/mame/drivers/goldnpkr.cpp b/src/mame/drivers/goldnpkr.cpp index 439261cc1bb..45b07593f31 100644 --- a/src/mame/drivers/goldnpkr.cpp +++ b/src/mame/drivers/goldnpkr.cpp @@ -4297,7 +4297,6 @@ MACHINE_CONFIG_START(goldnpkr_state::goldnpkr_base) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, CPU_CLOCK) MCFG_CPU_PROGRAM_MAP(goldnpkr_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", goldnpkr_state, nmi_line_pulse) MCFG_NVRAM_ADD_0FILL("nvram") @@ -4322,6 +4321,7 @@ MACHINE_CONFIG_START(goldnpkr_state::goldnpkr_base) MCFG_MC6845_ADD("crtc", MC6845, "screen", CPU_CLOCK) /* 68B45 or 6845s @ CPU clock */ MCFG_MC6845_SHOW_BORDER_AREA(false) MCFG_MC6845_CHAR_WIDTH(8) + MCFG_MC6845_OUT_VSYNC_CB(INPUTLINE("maincpu", INPUT_LINE_NMI)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", goldnpkr) MCFG_PALETTE_ADD("palette", 256) @@ -4704,7 +4704,6 @@ MACHINE_CONFIG_START(blitz_state::megadpkr) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M6502, CPU_CLOCK) MCFG_CPU_PROGRAM_MAP(megadpkr_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", driver_device, irq0_line_hold) MCFG_DEVICE_ADD("bankdev", ADDRESS_MAP_BANK, 0) MCFG_DEVICE_PROGRAM_MAP(megadpkr_banked_map) @@ -4739,6 +4738,7 @@ MACHINE_CONFIG_START(blitz_state::megadpkr) MCFG_MC6845_ADD("crtc", MC6845, "screen", CPU_CLOCK) MCFG_MC6845_SHOW_BORDER_AREA(false) MCFG_MC6845_CHAR_WIDTH(8) + MCFG_MC6845_OUT_VSYNC_CB(INPUTLINE("maincpu", 0)) MCFG_GFXDECODE_ADD("gfxdecode", "palette", goldnpkr) MCFG_PALETTE_ADD("palette", 256) -- cgit v1.2.3 From 4fdffdd2cfe613e94e8957a2d83a379e8acb0492 Mon Sep 17 00:00:00 2001 From: AJR Date: Wed, 28 Mar 2018 16:45:43 -0400 Subject: funworld.cpp: Use MC6845 sync callback instead of MCFG_CPU_VBLANK_INT (nw) --- src/mame/drivers/funworld.cpp | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/src/mame/drivers/funworld.cpp b/src/mame/drivers/funworld.cpp index 366201a56a7..4c7880f1727 100644 --- a/src/mame/drivers/funworld.cpp +++ b/src/mame/drivers/funworld.cpp @@ -3068,7 +3068,6 @@ MACHINE_CONFIG_START(funworld_state::fw1stpal) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M65SC02, CPU_CLOCK) /* 2MHz */ MCFG_CPU_PROGRAM_MAP(funworld_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", funworld_state, nmi_line_pulse) MCFG_NVRAM_ADD_0FILL("nvram") @@ -3100,6 +3099,7 @@ MACHINE_CONFIG_START(funworld_state::fw1stpal) MCFG_MC6845_ADD("crtc", MC6845, "screen", CRTC_CLOCK) /* 2MHz, veryfied on jollycrd & royalcrd */ MCFG_MC6845_SHOW_BORDER_AREA(false) MCFG_MC6845_CHAR_WIDTH(4) + MCFG_MC6845_OUT_VSYNC_CB(INPUTLINE("maincpu", INPUT_LINE_NMI)) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") @@ -3115,7 +3115,6 @@ MACHINE_CONFIG_START(funworld_state::fw2ndpal) fw1stpal(config); MCFG_CPU_REPLACE("maincpu", R65C02, CPU_CLOCK) /* 2MHz */ MCFG_CPU_PROGRAM_MAP(funworld_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", funworld_state, nmi_line_pulse) MCFG_GFXDECODE_MODIFY("gfxdecode", fw2ndpal) MACHINE_CONFIG_END @@ -3126,7 +3125,6 @@ MACHINE_CONFIG_START(funworld_state::funquiz) // fw2ndpal(config); MCFG_CPU_REPLACE("maincpu", R65C02, CPU_CLOCK) /* 2MHz */ MCFG_CPU_PROGRAM_MAP(funquiz_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", funworld_state, nmi_line_pulse) MCFG_SOUND_REPLACE("ay8910", AY8910, SND_CLOCK) /* 2MHz */ MCFG_AY8910_PORT_A_READ_CB(READ8(funworld_state, funquiz_ay8910_a_r)) /* portA in */ MCFG_AY8910_PORT_B_READ_CB(READ8(funworld_state, funquiz_ay8910_b_r)) /* portB in */ @@ -3140,7 +3138,6 @@ MACHINE_CONFIG_START(funworld_state::magicrd2) fw1stpal(config); MCFG_CPU_REPLACE("maincpu", R65C02, CPU_CLOCK) /* 2MHz */ MCFG_CPU_PROGRAM_MAP(magicrd2_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", funworld_state, nmi_line_pulse) MCFG_VIDEO_START_OVERRIDE(funworld_state, magicrd2) MCFG_DEVICE_REMOVE("crtc") @@ -3148,6 +3145,7 @@ MACHINE_CONFIG_START(funworld_state::magicrd2) MCFG_MC6845_SHOW_BORDER_AREA(false) MCFG_MC6845_VISAREA_ADJUST(0, -56, 0, 0) MCFG_MC6845_CHAR_WIDTH(4) + MCFG_MC6845_OUT_VSYNC_CB(INPUTLINE("maincpu", INPUT_LINE_NMI)) MCFG_SOUND_REPLACE("ay8910", AY8910, SND_CLOCK) /* 2MHz */ MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(funworld_state, funworld_lamp_a_w)) /* portA out */ @@ -3160,7 +3158,6 @@ MACHINE_CONFIG_START(funworld_state::royalcd1) fw1stpal(config); MCFG_CPU_REPLACE("maincpu", R65C02, CPU_CLOCK) /* (G65SC02P in pro version) 2MHz */ MCFG_CPU_PROGRAM_MAP(magicrd2_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", funworld_state, nmi_line_pulse) MACHINE_CONFIG_END @@ -3168,7 +3165,6 @@ MACHINE_CONFIG_START(funworld_state::royalcd2) fw2ndpal(config); MCFG_CPU_REPLACE("maincpu", R65C02, CPU_CLOCK) /* 2MHz */ MCFG_CPU_PROGRAM_MAP(magicrd2_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", funworld_state, nmi_line_pulse) MACHINE_CONFIG_END @@ -3176,7 +3172,6 @@ MACHINE_CONFIG_START(funworld_state::cuoreuno) fw1stpal(config); MCFG_CPU_REPLACE("maincpu", R65C02, CPU_CLOCK) /* 2MHz */ MCFG_CPU_PROGRAM_MAP(cuoreuno_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", funworld_state, nmi_line_pulse) MACHINE_CONFIG_END @@ -3184,7 +3179,6 @@ MACHINE_CONFIG_START(funworld_state::saloon) fw1stpal(config); MCFG_CPU_REPLACE("maincpu", R65C02, CPU_CLOCK) /* 2MHz */ MCFG_CPU_PROGRAM_MAP(saloon_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", funworld_state, nmi_line_pulse) MACHINE_CONFIG_END @@ -3192,7 +3186,6 @@ MACHINE_CONFIG_START(funworld_state::witchryl) fw1stpal(config); MCFG_CPU_REPLACE("maincpu", R65C02, CPU_CLOCK) /* 2MHz */ MCFG_CPU_PROGRAM_MAP(witchryl_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", funworld_state, nmi_line_pulse) MACHINE_CONFIG_END @@ -3200,7 +3193,6 @@ MACHINE_CONFIG_START(funworld_state::lunapark) fw1stpal(config); MCFG_CPU_REPLACE("maincpu", R65C02, CPU_CLOCK) /* 2MHz */ MCFG_CPU_PROGRAM_MAP(lunapark_map) // mirrored video RAM (4000/5000 to 6000/7000). - MCFG_CPU_VBLANK_INT_DRIVER("screen", funworld_state, nmi_line_pulse) MCFG_MACHINE_START_OVERRIDE(funworld_state, lunapark) MCFG_MACHINE_RESET_OVERRIDE(funworld_state, lunapark) MACHINE_CONFIG_END @@ -3210,7 +3202,6 @@ MACHINE_CONFIG_START(funworld_state::chinatow) fw2ndpal(config); MCFG_CPU_REPLACE("maincpu", R65C02, CPU_CLOCK) /* 2MHz */ MCFG_CPU_PROGRAM_MAP(chinatow_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", funworld_state, nmi_line_pulse) MCFG_VIDEO_START_OVERRIDE(funworld_state, chinatow) MACHINE_CONFIG_END @@ -3218,7 +3209,6 @@ MACHINE_CONFIG_START(funworld_state::rcdino4) fw1stpal(config); MCFG_CPU_REPLACE("maincpu", R65C02, CPU_CLOCK) /* 2MHz */ MCFG_CPU_PROGRAM_MAP(chinatow_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", funworld_state, nmi_line_pulse) MCFG_VIDEO_START_OVERRIDE(funworld_state, chinatow) MACHINE_CONFIG_END @@ -3227,7 +3217,6 @@ MACHINE_CONFIG_START(funworld_state::intrgmes) fw1stpal(config); MCFG_CPU_REPLACE("maincpu", R65C02, CPU_CLOCK) /* 2MHz */ MCFG_CPU_PROGRAM_MAP(intergames_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", funworld_state, nmi_line_pulse) MCFG_GFXDECODE_MODIFY("gfxdecode", fw2ndpal) MACHINE_CONFIG_END @@ -3236,7 +3225,6 @@ MACHINE_CONFIG_START(funworld_state::fw_a7_11) fw1stpal(config); MCFG_CPU_REPLACE("maincpu", R65C02, CPU_CLOCK) /* 2MHz */ MCFG_CPU_PROGRAM_MAP(fw_a7_11_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", funworld_state, nmi_line_pulse) // MCFG_GFXDECODE_MODIFY("gfxdecode", fw2ndpal) MACHINE_CONFIG_END -- cgit v1.2.3 From 0874a0634ff4b0665d1cd47df63ebd17f8a4c5c8 Mon Sep 17 00:00:00 2001 From: AJR Date: Wed, 28 Mar 2018 16:57:11 -0400 Subject: madalien: MC6845 sync callback instead of MCFG_CPU_VBLANK_INT (nw) --- src/mame/drivers/madalien.cpp | 1 - src/mame/video/madalien.cpp | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mame/drivers/madalien.cpp b/src/mame/drivers/madalien.cpp index 5973d949a07..2e556bdb22a 100644 --- a/src/mame/drivers/madalien.cpp +++ b/src/mame/drivers/madalien.cpp @@ -158,7 +158,6 @@ MACHINE_CONFIG_START(madalien_state::madalien) MCFG_CPU_ADD("audiocpu", M6502, SOUND_CLOCK / 8) /* 512kHz */ MCFG_CPU_PROGRAM_MAP(audio_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", madalien_state, nmi_line_pulse) /* video hardware */ madalien_video(config); diff --git a/src/mame/video/madalien.cpp b/src/mame/video/madalien.cpp index d4b1a1af312..ef244bf8c32 100644 --- a/src/mame/video/madalien.cpp +++ b/src/mame/video/madalien.cpp @@ -383,4 +383,5 @@ MACHINE_CONFIG_START(madalien_state::madalien_video) MCFG_MC6845_ADD("crtc", MC6845, "screen", PIXEL_CLOCK / 8) MCFG_MC6845_SHOW_BORDER_AREA(false) MCFG_MC6845_CHAR_WIDTH(8) + MCFG_MC6845_OUT_VSYNC_CB(INPUTLINE("audiocpu", INPUT_LINE_NMI)) MACHINE_CONFIG_END -- cgit v1.2.3 From ace06f825c50b2389b793e7ecf0b790a694bd07a Mon Sep 17 00:00:00 2001 From: AJR Date: Wed, 28 Mar 2018 17:29:48 -0400 Subject: twins.cpp: Add some plausible raw params and eliminate MCFG_CPU_VBLANK_INT (nw) --- src/mame/drivers/twins.cpp | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/src/mame/drivers/twins.cpp b/src/mame/drivers/twins.cpp index 76a73f1a050..3bbd3921d87 100644 --- a/src/mame/drivers/twins.cpp +++ b/src/mame/drivers/twins.cpp @@ -394,16 +394,13 @@ MACHINE_CONFIG_START(twins_state::twins) MCFG_CPU_ADD("maincpu", V30, 8000000) MCFG_CPU_PROGRAM_MAP(twins_map) MCFG_CPU_IO_MAP(twins_io) - MCFG_CPU_VBLANK_INT_DRIVER("screen", twins_state, nmi_line_pulse) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(50) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(320,256) - 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(twins_state, screen_update_twins) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI)) MCFG_24C02_ADD("i2cmem") @@ -444,16 +441,13 @@ MACHINE_CONFIG_START(twins_state::twinsa) MCFG_CPU_ADD("maincpu", V30, XTAL(16'000'000)/2) /* verified on pcb */ MCFG_CPU_PROGRAM_MAP(twins_map) MCFG_CPU_IO_MAP(twinsa_io) - MCFG_CPU_VBLANK_INT_DRIVER("screen", twins_state, nmi_line_pulse) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(50) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(320,256) - 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(twins_state, screen_update_twins) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI)) MCFG_PALETTE_ADD("palette", 256) MCFG_RAMDAC_ADD("ramdac", ramdac_map, "palette") @@ -574,16 +568,13 @@ MACHINE_CONFIG_START(twins_state::spider) MCFG_CPU_ADD("maincpu", V30, 8000000) MCFG_CPU_PROGRAM_MAP(twins_map) MCFG_CPU_IO_MAP(spider_io) - MCFG_CPU_VBLANK_INT_DRIVER("screen", twins_state, nmi_line_pulse) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(50) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(320,256) - 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(twins_state, screen_update_spider) MCFG_SCREEN_PALETTE("palette") + MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_NMI)) MCFG_PALETTE_ADD("palette", 0x100) -- cgit v1.2.3