From 7d528cc33a3a9f7bf86caea0cfee917fe8a11dbd Mon Sep 17 00:00:00 2001 From: "Alex W. Jackson" Date: Sat, 22 Feb 2014 11:37:42 +0000 Subject: [PATCH] Make memarray word/dword/qword writers take a mem_mask, and update the tilemap device to use them [Alex Jackson] --- src/emu/memarray.h | 6 +++--- src/emu/tilemap.c | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/emu/memarray.h b/src/emu/memarray.h index e4b3e583b76..d4568625cc3 100644 --- a/src/emu/memarray.h +++ b/src/emu/memarray.h @@ -74,9 +74,9 @@ public: UINT32 read32(offs_t offset) { return reinterpret_cast(m_base)[offset]; } UINT64 read64(offs_t offset) { return reinterpret_cast(m_base)[offset]; } void write8(offs_t offset, UINT8 data) { reinterpret_cast(m_base)[offset] = data; } - void write16(offs_t offset, UINT16 data) { reinterpret_cast(m_base)[offset] = data; } - void write32(offs_t offset, UINT32 data) { reinterpret_cast(m_base)[offset] = data; } - void write64(offs_t offset, UINT64 data) { reinterpret_cast(m_base)[offset] = data; } + void write16(offs_t offset, UINT16 data, UINT16 mem_mask = 0xffff) { COMBINE_DATA(&reinterpret_cast(m_base)[offset]); } + void write32(offs_t offset, UINT32 data, UINT32 mem_mask = 0xffffffff) { COMBINE_DATA(&reinterpret_cast(m_base)[offset]); } + void write64(offs_t offset, UINT64 data, UINT64 mem_mask = U64(0xffffffffffffffff)) { COMBINE_DATA(&reinterpret_cast(m_base)[offset]); } private: // internal read/write helpers for 1 byte entries diff --git a/src/emu/tilemap.c b/src/emu/tilemap.c index daf44cc1f83..b840114ff49 100644 --- a/src/emu/tilemap.c +++ b/src/emu/tilemap.c @@ -1639,14 +1639,14 @@ void tilemap_device::static_set_transparent_pen(device_t &device, pen_t pen) WRITE8_HANDLER(tilemap_device::write) { - reinterpret_cast(m_basemem.base())[offset] = data; + m_basemem.write8(offset, data); offset /= m_bytes_per_entry; mark_tile_dirty(offset); } WRITE16_HANDLER(tilemap_device::write) { - COMBINE_DATA(&reinterpret_cast(m_basemem.base())[offset]); + m_basemem.write16(offset, data, mem_mask); offset = offset * 2 / m_bytes_per_entry; mark_tile_dirty(offset); if (m_bytes_per_entry < 2) @@ -1655,7 +1655,7 @@ WRITE16_HANDLER(tilemap_device::write) WRITE32_HANDLER(tilemap_device::write) { - COMBINE_DATA(&reinterpret_cast(m_basemem.base())[offset]); + m_basemem.write32(offset, data, mem_mask); offset = offset * 4 / m_bytes_per_entry; mark_tile_dirty(offset); if (m_bytes_per_entry < 4) @@ -1676,14 +1676,14 @@ WRITE32_HANDLER(tilemap_device::write) WRITE8_HANDLER(tilemap_device::write_ext) { - reinterpret_cast(m_extmem.base())[offset] = data; + m_extmem.write8(offset, data); offset /= m_bytes_per_entry; mark_tile_dirty(offset); } WRITE16_HANDLER(tilemap_device::write_ext) { - COMBINE_DATA(&reinterpret_cast(m_extmem.base())[offset]); + m_extmem.write16(offset, data, mem_mask); offset = offset * 2 / m_bytes_per_entry; mark_tile_dirty(offset); if (m_bytes_per_entry < 2) @@ -1692,7 +1692,7 @@ WRITE16_HANDLER(tilemap_device::write_ext) WRITE32_HANDLER(tilemap_device::write_ext) { - COMBINE_DATA(&reinterpret_cast(m_extmem.base())[offset]); + m_extmem.write32(offset, data, mem_mask); offset = offset * 4 / m_bytes_per_entry; mark_tile_dirty(offset); if (m_bytes_per_entry < 4)