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_external_program_ram(nullptr),
|
||||||
m_internal_data_ram(nullptr),
|
m_internal_data_ram(nullptr),
|
||||||
m_dram_in_mb(0),
|
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;
|
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));
|
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()
|
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) */
|
/* 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())
|
if (m_last_output_full && !m_output_full_cb.isnull())
|
||||||
m_output_full_cb(m_last_output_full = 0);
|
m_output_full_cb(m_last_output_full = 0);
|
||||||
|
@ -251,6 +251,7 @@ protected:
|
|||||||
int m_dram_in_mb;
|
int m_dram_in_mb;
|
||||||
|
|
||||||
optional_shared_ptr<uint16_t> m_iram;
|
optional_shared_ptr<uint16_t> m_iram;
|
||||||
|
optional_device<device_execute_interface> m_maincpu;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user