diff options
author | AJR <ajrhacker@users.noreply.github.com> | 2020-04-04 09:56:11 -0400 |
---|---|---|
committer | AJR <ajrhacker@users.noreply.github.com> | 2020-04-04 09:56:14 -0400 |
commit | c1fea1f76c8cf933c7765251a096a1221b02def0 (patch) | |
tree | ac602b9072d800125a51aeb7ae4fe2ca707db5de | |
parent | 495b26dd6c78ee8a566caf525b020598522b2850 (diff) |
cvs.cpp, dkong.cpp, galaxold.cpp: Fix interrupt-related regressions in 2650-based games (nw)
-rw-r--r-- | src/mame/drivers/cvs.cpp | 9 | ||||
-rw-r--r-- | src/mame/drivers/dkong.cpp | 3 | ||||
-rw-r--r-- | src/mame/drivers/galaxold.cpp | 8 | ||||
-rw-r--r-- | src/mame/includes/galaxold.h | 2 | ||||
-rw-r--r-- | src/mame/machine/galaxold.cpp | 2 |
5 files changed, 12 insertions, 12 deletions
diff --git a/src/mame/drivers/cvs.cpp b/src/mame/drivers/cvs.cpp index 5a7004a47bb..10f86635b53 100644 --- a/src/mame/drivers/cvs.cpp +++ b/src/mame/drivers/cvs.cpp @@ -234,9 +234,7 @@ INTERRUPT_GEN_MEMBER(cvs_state::cvs_main_cpu_interrupt) WRITE_LINE_MEMBER(cvs_state::cvs_slave_cpu_interrupt) { - m_audiocpu->set_input_line_vector(0, 0x03); // S2650 - //m_audiocpu->set_input_line(0, state ? ASSERT_LINE : CLEAR_LINE); - m_audiocpu->set_input_line(0, state ? HOLD_LINE : CLEAR_LINE); + m_audiocpu->set_input_line(0, state ? ASSERT_LINE : CLEAR_LINE); } @@ -977,13 +975,14 @@ void cvs_state::cvs(machine_config &config) S2650(config, m_audiocpu, XTAL(14'318'181)/16); m_audiocpu->set_addrmap(AS_PROGRAM, &cvs_state::cvs_dac_cpu_map); + m_audiocpu->intack_handler().set([this] { m_audiocpu->set_input_line(0, CLEAR_LINE); return 0x03; }); /* doesn't look like it is used at all */ - //MCFG_S2650_SENSE_INPUT(READLINE(*this, cvs_state, cvs_393hz_clock_r)) + //m_audiocpu->sense_handler().set(FUNC(cvs_state::cvs_393hz_clock_r)); S2650(config, m_speechcpu, XTAL(14'318'181)/16); m_speechcpu->set_addrmap(AS_PROGRAM, &cvs_state::cvs_speech_cpu_map); /* romclk is much more probable, 393 Hz results in timing issues */ - //MCFG_S2650_SENSE_INPUT(READLINE(*this, cvs_state, cvs_393hz_clock_r)) + //m_speechcpu->sense_handler().set(FUNC(cvs_state::cvs_393hz_clock_r)); m_speechcpu->sense_handler().set("tms", FUNC(tms5110_device::romclk_hack_r)); /* video hardware */ diff --git a/src/mame/drivers/dkong.cpp b/src/mame/drivers/dkong.cpp index cb3597e05a0..24058318361 100644 --- a/src/mame/drivers/dkong.cpp +++ b/src/mame/drivers/dkong.cpp @@ -454,7 +454,7 @@ WRITE8_MEMBER(dkong_state::memory_write_byte) WRITE_LINE_MEMBER(dkong_state::s2650_interrupt) { if (state) - m_maincpu->set_input_line_and_vector(0, HOLD_LINE, 0x03); // Z80 + m_maincpu->set_input_line(0, ASSERT_LINE); } /************************************* @@ -1869,6 +1869,7 @@ void dkong_state::s2650(machine_config &config) s2650.set_addrmap(AS_DATA, &dkong_state::s2650_data_map); s2650.sense_handler().set("screen", FUNC(screen_device::vblank)); s2650.flag_handler().set(FUNC(dkong_state::s2650_fo_w)); + s2650.intack_handler().set([this]() { m_maincpu->set_input_line(0, CLEAR_LINE); return 0x03; }); m_screen->screen_vblank().set(FUNC(dkong_state::s2650_interrupt)); diff --git a/src/mame/drivers/galaxold.cpp b/src/mame/drivers/galaxold.cpp index 679a72b2a81..087b20094d9 100644 --- a/src/mame/drivers/galaxold.cpp +++ b/src/mame/drivers/galaxold.cpp @@ -2637,10 +2637,10 @@ void galaxold_state::hunchbkg(machine_config &config) galaxold_base(config); /* basic machine hardware */ - S2650(config.replace(), m_maincpu, PIXEL_CLOCK / 4); - m_maincpu->set_addrmap(AS_PROGRAM, &galaxold_state::hunchbkg_map); - m_maincpu->set_addrmap(AS_DATA, &galaxold_state::hunchbkg_data); - m_maincpu->set_irq_acknowledge_callback(FUNC(galaxold_state::hunchbkg_irq_callback)); + s2650_device &s2650(S2650(config.replace(), m_maincpu, PIXEL_CLOCK / 4)); + s2650.set_addrmap(AS_PROGRAM, &galaxold_state::hunchbkg_map); + s2650.set_addrmap(AS_DATA, &galaxold_state::hunchbkg_data); + s2650.intack_handler().set(FUNC(galaxold_state::hunchbkg_intack)); /* the nmi line seems to be inverted on the cpu plugin board */ m_7474_9m_1->comp_output_cb().set_inputline("maincpu", S2650_SENSE_LINE); diff --git a/src/mame/includes/galaxold.h b/src/mame/includes/galaxold.h index c204c01099c..3949ac17a24 100644 --- a/src/mame/includes/galaxold.h +++ b/src/mame/includes/galaxold.h @@ -222,7 +222,7 @@ public: TIMER_CALLBACK_MEMBER(stars_blink_callback); TIMER_CALLBACK_MEMBER(stars_scroll_callback); TIMER_DEVICE_CALLBACK_MEMBER(galaxold_interrupt_timer); - IRQ_CALLBACK_MEMBER(hunchbkg_irq_callback); + uint8_t hunchbkg_intack(); void state_save_register(); void video_start_common(); diff --git a/src/mame/machine/galaxold.cpp b/src/mame/machine/galaxold.cpp index 06256aaf30c..cef896131f2 100644 --- a/src/mame/machine/galaxold.cpp +++ b/src/mame/machine/galaxold.cpp @@ -13,7 +13,7 @@ #include "includes/galaxold.h" -IRQ_CALLBACK_MEMBER(galaxold_state::hunchbkg_irq_callback) +uint8_t galaxold_state::hunchbkg_intack() { m_maincpu->set_input_line(0, CLEAR_LINE); return 0x03; |