diff options
Diffstat (limited to 'src/mame/machine/315-6154.cpp')
-rw-r--r-- | src/mame/machine/315-6154.cpp | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/mame/machine/315-6154.cpp b/src/mame/machine/315-6154.cpp index a086c4a009f..940c1b8c144 100644 --- a/src/mame/machine/315-6154.cpp +++ b/src/mame/machine/315-6154.cpp @@ -76,7 +76,21 @@ WRITE32_MEMBER(sega_315_6154_device::registers_w) else if (offset == 0x38 / 4) { if (m_registers[0x38 / 4] & 0x01000000) - logerror("got dma transfer request from 0x%08x to 0x%08x size 0x%08x bytes\n", m_registers[0x30 / 4], m_registers[0x34 / 4], (m_registers[0x38 / 4] & 0xffffff) << 2); + { + uint32_t s, d, l; + + s = m_registers[0x30 / 4]; + d = m_registers[0x34 / 4]; + l = m_registers[0x38 / 4] & 0xffffff; + logerror("got dma transfer request from 0x%08x to 0x%08x size 0x%08x bytes\n", s, d, l << 2); + while (l != 0) + { + m_memory->write_dword(d, m_memory->read_dword(s)); + s += 4; + d += 4; + l--; + } + } m_registers[0x38 / 4] &= ~0x01000000; } } |