Make memarray word/dword/qword writers take a mem_mask, and update the tilemap device to use them [Alex Jackson]

This commit is contained in:
Alex W. Jackson 2014-02-22 11:37:42 +00:00
parent 91108d0b60
commit 7d528cc33a
2 changed files with 9 additions and 9 deletions

View File

@ -74,9 +74,9 @@ public:
UINT32 read32(offs_t offset) { return reinterpret_cast<UINT32 *>(m_base)[offset]; }
UINT64 read64(offs_t offset) { return reinterpret_cast<UINT64 *>(m_base)[offset]; }
void write8(offs_t offset, UINT8 data) { reinterpret_cast<UINT8 *>(m_base)[offset] = data; }
void write16(offs_t offset, UINT16 data) { reinterpret_cast<UINT16 *>(m_base)[offset] = data; }
void write32(offs_t offset, UINT32 data) { reinterpret_cast<UINT32 *>(m_base)[offset] = data; }
void write64(offs_t offset, UINT64 data) { reinterpret_cast<UINT64 *>(m_base)[offset] = data; }
void write16(offs_t offset, UINT16 data, UINT16 mem_mask = 0xffff) { COMBINE_DATA(&reinterpret_cast<UINT16 *>(m_base)[offset]); }
void write32(offs_t offset, UINT32 data, UINT32 mem_mask = 0xffffffff) { COMBINE_DATA(&reinterpret_cast<UINT32 *>(m_base)[offset]); }
void write64(offs_t offset, UINT64 data, UINT64 mem_mask = U64(0xffffffffffffffff)) { COMBINE_DATA(&reinterpret_cast<UINT64 *>(m_base)[offset]); }
private:
// internal read/write helpers for 1 byte entries

View File

@ -1639,14 +1639,14 @@ void tilemap_device::static_set_transparent_pen(device_t &device, pen_t pen)
WRITE8_HANDLER(tilemap_device::write)
{
reinterpret_cast<UINT8 *>(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<UINT16 *>(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<UINT32 *>(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<UINT8 *>(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<UINT16 *>(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<UINT32 *>(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)