From d5af76fd3cf68637e33b6a4123a727a171227b69 Mon Sep 17 00:00:00 2001 From: AJR Date: Thu, 10 Dec 2020 23:10:38 -0500 Subject: [PATCH] bublbobl.cpp, kikikai.cpp: Eliminate set_input_line_vector --- src/mame/drivers/bublbobl.cpp | 3 +++ src/mame/drivers/kikikai.cpp | 3 +++ src/mame/includes/bublbobl.h | 1 + src/mame/includes/kikikai.h | 2 ++ src/mame/machine/bublbobl.cpp | 11 +++++++---- src/mame/machine/kikikai.cpp | 16 ++++++++++------ 6 files changed, 26 insertions(+), 10 deletions(-) diff --git a/src/mame/drivers/bublbobl.cpp b/src/mame/drivers/bublbobl.cpp index 57b5c77c633..7aec7ba4888 100644 --- a/src/mame/drivers/bublbobl.cpp +++ b/src/mame/drivers/bublbobl.cpp @@ -1004,6 +1004,8 @@ void bublbobl_state::bublbobl_nomcu(machine_config &config) void bublbobl_state::bublbobl(machine_config &config) { bublbobl_nomcu(config); + m_maincpu->set_irq_acknowledge_callback(FUNC(bublbobl_state::mcram_vect_r)); + M6801(config, m_mcu, XTAL(4'000'000)); // actually 6801U4 - xtal is 4MHz, divided by 4 internally m_mcu->set_addrmap(AS_PROGRAM, &bublbobl_state::mcu_map); @@ -1065,6 +1067,7 @@ MACHINE_RESET_MEMBER(bub68705_state, bub68705) void bub68705_state::bub68705(machine_config &config) { bublbobl_nomcu(config); + m_maincpu->set_irq_acknowledge_callback(FUNC(bublbobl_state::mcram_vect_r)); /* basic machine hardware */ M68705P3(config, m_mcu, XTAL(4'000'000)); // xtal is 4MHz, divided by 4 internally diff --git a/src/mame/drivers/kikikai.cpp b/src/mame/drivers/kikikai.cpp index 1aa7c53ccee..e945c4665e7 100644 --- a/src/mame/drivers/kikikai.cpp +++ b/src/mame/drivers/kikikai.cpp @@ -637,6 +637,7 @@ void kikikai_state::kicknrun(machine_config& config) // Not too sure IRQs are triggered by MCU.. m_maincpu->set_vblank_int("screen", FUNC(kikikai_state::kikikai_interrupt)); + m_maincpu->set_irq_acknowledge_callback(FUNC(kikikai_state::mcram_vect_r)); M6801(config, m_mcu, XTAL(4'000'000)); // actually 6801U4 - xtal is 4MHz, divided by 4 internally m_mcu->set_addrmap(AS_PROGRAM, &kikikai_state::mcu_map); @@ -656,12 +657,14 @@ void kikikai_simulation_state::kikikai(machine_config &config) // IRQs should be triggered by the MCU, but we don't have it m_maincpu->set_vblank_int("screen", FUNC(kikikai_simulation_state::kikikai_interrupt)); + m_maincpu->set_irq_acknowledge_callback(FUNC(kikikai_simulation_state::mcram_vect_r)); } void mexico86_state::mexico86_68705(machine_config& config) { base(config); + m_maincpu->set_irq_acknowledge_callback(FUNC(mexico86_state::mcram_vect_r)); M68705P3(config, m_68705mcu, 4000000); /* xtal is 4MHz, divided by 4 internally */ m_68705mcu->portc_r().set_ioport("IN0"); diff --git a/src/mame/includes/bublbobl.h b/src/mame/includes/bublbobl.h index 018cae9812e..e8fa4a12c95 100644 --- a/src/mame/includes/bublbobl.h +++ b/src/mame/includes/bublbobl.h @@ -99,6 +99,7 @@ public: uint8_t tokiob_mcu_r(); void bublbobl_soundcpu_reset_w(uint8_t data); uint8_t common_sound_semaphores_r(); + IRQ_CALLBACK_MEMBER(mcram_vect_r); uint8_t bublbobl_mcu_ddr1_r(); void bublbobl_mcu_ddr1_w(uint8_t data); uint8_t bublbobl_mcu_ddr2_r(); diff --git a/src/mame/includes/kikikai.h b/src/mame/includes/kikikai.h index cdbabb19dc7..42e70873f95 100644 --- a/src/mame/includes/kikikai.h +++ b/src/mame/includes/kikikai.h @@ -41,6 +41,8 @@ protected: virtual void machine_start() override; virtual void machine_reset() override; + IRQ_CALLBACK_MEMBER(mcram_vect_r); + private: /* memory pointers */ required_shared_ptr m_mainram; diff --git a/src/mame/machine/bublbobl.cpp b/src/mame/machine/bublbobl.cpp index 2af8ab904bd..20afd11c217 100644 --- a/src/mame/machine/bublbobl.cpp +++ b/src/mame/machine/bublbobl.cpp @@ -153,6 +153,11 @@ uint8_t bublbobl_state::common_sound_semaphores_r() return ret; } +IRQ_CALLBACK_MEMBER(bublbobl_state::mcram_vect_r) +{ + m_maincpu->set_input_line(INPUT_LINE_IRQ0, CLEAR_LINE); + return m_mcu_sharedram[0]; +} /*************************************************************************** @@ -222,8 +227,7 @@ void bublbobl_state::bublbobl_mcu_port1_w(uint8_t data) if ((m_port1_out & 0x40) && (~data & 0x40)) { // logerror("triggering IRQ on main CPU\n"); - m_maincpu->set_input_line_vector(0, m_mcu_sharedram[0]); // Z80 - m_maincpu->set_input_line(0, HOLD_LINE); + m_maincpu->set_input_line(0, ASSERT_LINE); } // bit 7: select read or write shared RAM @@ -473,8 +477,7 @@ void bub68705_state::port_b_w(offs_t offset, uint8_t data, uint8_t mem_mask) /* hack to get random EXTEND letters (who is supposed to do this? 68705? PAL?) */ m_mcu_sharedram[0x7c] = machine().rand() % 6; - m_maincpu->set_input_line_vector(0, m_mcu_sharedram[0]); // Z80 - m_maincpu->set_input_line(0, HOLD_LINE); + m_maincpu->set_input_line(0, ASSERT_LINE); } if (BIT(mem_mask, 6) && !BIT(data, 6) && BIT(m_port_b_out, 6)) diff --git a/src/mame/machine/kikikai.cpp b/src/mame/machine/kikikai.cpp index 08331daa9f9..028af58b4e9 100644 --- a/src/mame/machine/kikikai.cpp +++ b/src/mame/machine/kikikai.cpp @@ -187,8 +187,7 @@ void kikikai_simulation_state::mcu_simulate( ) INTERRUPT_GEN_MEMBER(kikikai_state::kikikai_interrupt) { - device.execute().set_input_line_vector(0, m_mcu_sharedram[0]); // Z80 - device.execute().set_input_line(0, HOLD_LINE); + device.execute().set_input_line(0, ASSERT_LINE); } @@ -197,8 +196,14 @@ INTERRUPT_GEN_MEMBER(kikikai_simulation_state::kikikai_interrupt) if (m_kikikai_simulated_mcu_running) mcu_simulate(); - device.execute().set_input_line_vector(0, m_mcu_sharedram[0]); // Z80 - device.execute().set_input_line(0, HOLD_LINE); + device.execute().set_input_line(0, ASSERT_LINE); +} + + +IRQ_CALLBACK_MEMBER(kikikai_state::mcram_vect_r) +{ + m_maincpu->set_input_line(INPUT_LINE_IRQ0, CLEAR_LINE); + return m_mcu_sharedram[0]; } #if 0 @@ -323,8 +328,7 @@ void mexico86_state::mexico86_68705_port_b_w(offs_t offset, u8 data, u8 mem_mask if (BIT(mem_mask, 5) && BIT(data, 5) && !BIT(m_port_b_out, 5)) { - m_maincpu->set_input_line_vector(0, m_mcu_sharedram[0]); // Z80 - m_maincpu->set_input_line(0, HOLD_LINE); // HOLD_LINE works better in Z80 interrupt mode 1. + m_maincpu->set_input_line(0, ASSERT_LINE); m_68705mcu->set_input_line(M68705_IRQ_LINE, CLEAR_LINE); }