dcs: Reinstate hastily removed eat_cycles. Fixes MT07027. (nw)
This commit is contained in:
parent
b47f66a760
commit
60fc9da0c8
@ -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);
|
||||
|
@ -251,6 +251,7 @@ protected:
|
||||
int m_dram_in_mb;
|
||||
|
||||
optional_shared_ptr<uint16_t> m_iram;
|
||||
optional_device<device_execute_interface> m_maincpu;
|
||||
};
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user