From 3b84297de51359b9d3e5d045728b159dae4804e5 Mon Sep 17 00:00:00 2001 From: AJR Date: Tue, 23 Oct 2018 07:13:34 -0400 Subject: [PATCH] z29: Fix pseudo-DMA memory fill mode (nw) --- src/mame/drivers/z29.cpp | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/src/mame/drivers/z29.cpp b/src/mame/drivers/z29.cpp index 34a95520f7f..5807568f33f 100644 --- a/src/mame/drivers/z29.cpp +++ b/src/mame/drivers/z29.cpp @@ -50,31 +50,39 @@ private: required_shared_ptr m_attrmem; required_region_ptr m_chargen; - bool m_t0; + bool m_dmatype; }; void z29_state::machine_start() { - save_item(NAME(m_t0)); + save_item(NAME(m_dmatype)); } void z29_state::p3_w(u8 data) { - m_t0 = BIT(data, 4); + m_dmatype = BIT(data, 4); } READ8_MEMBER(z29_state::bs_24k_r) { if (!machine().side_effects_disabled()) { - u8 chardata = m_charmem[offset]; - u8 attrdata = m_attrmem[offset] & 0xf; + if (m_dmatype) + { + u8 chardata = m_charmem[offset]; + u8 attrdata = m_attrmem[offset] & 0xf; - m_crtc[0]->dack_w(space, 0, chardata & 0x7f); - m_crtc[1]->dack_w(space, 0, (chardata & 0x60) | (BIT(chardata, 7) ? 0x10 : 0) | attrdata); + m_crtc[0]->dack_w(space, 0, chardata & 0x7f); + m_crtc[1]->dack_w(space, 0, (chardata & 0x60) | (BIT(chardata, 7) ? 0x10 : 0) | attrdata); + } + else + { + m_charmem[offset] = 0x20; + m_attrmem[offset] = 0; + } } - return m_t0 ? 0x24 : 0x20; + return m_dmatype ? 0x24 : 0x20; } WRITE8_MEMBER(z29_state::crtc_w)