summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
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
commitc1fea1f76c8cf933c7765251a096a1221b02def0 (patch)
treeac602b9072d800125a51aeb7ae4fe2ca707db5de
parent495b26dd6c78ee8a566caf525b020598522b2850 (diff)
cvs.cpp, dkong.cpp, galaxold.cpp: Fix interrupt-related regressions in 2650-based games (nw)
-rw-r--r--src/mame/drivers/cvs.cpp9
-rw-r--r--src/mame/drivers/dkong.cpp3
-rw-r--r--src/mame/drivers/galaxold.cpp8
-rw-r--r--src/mame/includes/galaxold.h2
-rw-r--r--src/mame/machine/galaxold.cpp2
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;