summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/audio/gottlieb.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/audio/gottlieb.cpp')
-rw-r--r--src/mame/audio/gottlieb.cpp27
1 files changed, 24 insertions, 3 deletions
diff --git a/src/mame/audio/gottlieb.cpp b/src/mame/audio/gottlieb.cpp
index 4c56cff5e23..8c8555f13be 100644
--- a/src/mame/audio/gottlieb.cpp
+++ b/src/mame/audio/gottlieb.cpp
@@ -463,7 +463,8 @@ inline void gottlieb_sound_r2_device::nmi_state_update()
uint8_t gottlieb_sound_r2_device::audio_data_r()
{
- m_audiocpu->set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
+ if (!machine().side_effects_disabled())
+ m_audiocpu->set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
return m_audiocpu_latch;
}
@@ -475,12 +476,29 @@ uint8_t gottlieb_sound_r2_device::audio_data_r()
uint8_t gottlieb_sound_r2_device::speech_data_r()
{
- m_speechcpu->set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
+ if (!machine().side_effects_disabled())
+ m_speechcpu->set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
return m_speechcpu_latch;
}
//-------------------------------------------------
+// signal_audio_nmi_r - signal an NMI from the
+// speech CPU to the audio CPU
+//-------------------------------------------------
+
+uint8_t gottlieb_sound_r2_device::signal_audio_nmi_r()
+{
+ if (!machine().side_effects_disabled())
+ {
+ m_audiocpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
+ m_audiocpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE);
+ }
+ return 0xff;
+}
+
+
+//-------------------------------------------------
// signal_audio_nmi_w - signal an NMI from the
// speech CPU to the audio CPU
//-------------------------------------------------
@@ -620,7 +638,7 @@ void gottlieb_sound_r2_device::gottlieb_speech_r2_map(address_map &map)
map(0x8000, 0x8000).mirror(0x1fff).w(FUNC(gottlieb_sound_r2_device::psg_latch_w));
map(0xa000, 0xa000).mirror(0x07ff).w(FUNC(gottlieb_sound_r2_device::nmi_rate_w));
map(0xa800, 0xa800).mirror(0x07ff).r(FUNC(gottlieb_sound_r2_device::speech_data_r));
- map(0xb000, 0xb000).mirror(0x07ff).w(FUNC(gottlieb_sound_r2_device::signal_audio_nmi_w));
+ map(0xb000, 0xb000).mirror(0x07ff).rw(FUNC(gottlieb_sound_r2_device::signal_audio_nmi_r), FUNC(gottlieb_sound_r2_device::signal_audio_nmi_w));
map(0xc000, 0xffff).rom();
}
@@ -703,6 +721,9 @@ void gottlieb_sound_r2_device::device_start()
save_item(NAME(m_nmi_state));
save_item(NAME(m_speech_control));
save_item(NAME(m_last_command));
+ save_item(NAME(m_psg_latch));
+ save_item(NAME(m_psg_data_latch));
+ save_item(NAME(m_sp0250_latch));
}