From 60fc9da0c864455defb8a07eed46b8ca031d1546 Mon Sep 17 00:00:00 2001 From: Ted Green Date: Fri, 29 Jun 2018 15:08:36 -0600 Subject: dcs: Reinstate hastily removed eat_cycles. Fixes MT07027. (nw) --- src/mame/audio/dcs.cpp | 7 ++++++- src/mame/audio/dcs.h | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/mame/audio/dcs.cpp b/src/mame/audio/dcs.cpp index daebaf6bf09..3004c5eeb3d 100644 --- a/src/mame/audio/dcs.cpp +++ b/src/mame/audio/dcs.cpp @@ -729,7 +729,8 @@ dcs_audio_device::dcs_audio_device(const machine_config &mconfig, device_type ty m_external_program_ram(nullptr), m_internal_data_ram(nullptr), m_dram_in_mb(0), - m_iram(*this, "iram") + m_iram(*this, "iram"), + m_maincpu(*this, ":maincpu") { m_dmadac[0] = m_dmadac[1] = m_dmadac[2] = m_dmadac[3] = m_dmadac[4] = m_dmadac[5] = nullptr; memset(m_control_regs, 0, sizeof(m_control_regs)); @@ -1642,6 +1643,10 @@ void dcs_audio_device::ack_w() uint16_t dcs_audio_device::data_r() { + // If the cpu is reading empty data it is probably polling so eat some cyles + if IS_OUTPUT_EMPTY() + m_maincpu->eat_cycles(4444); + /* data is actually only 8 bit (read from d8-d15, which is d0-d7 from the data access instructions POV) on early dcs, but goes 16 on later (seattle) */ if (m_last_output_full && !m_output_full_cb.isnull()) m_output_full_cb(m_last_output_full = 0); diff --git a/src/mame/audio/dcs.h b/src/mame/audio/dcs.h index 27e11903016..fc82c05bf51 100644 --- a/src/mame/audio/dcs.h +++ b/src/mame/audio/dcs.h @@ -251,6 +251,7 @@ protected: int m_dram_in_mb; optional_shared_ptr m_iram; + optional_device m_maincpu; }; -- cgit v1.2.3