mirror of
https://github.com/holub/mame
synced 2025-04-21 16:01:56 +03:00
raiden2.cpp: Improve tilemap performance by not marking tiles dirty unless data changes
This commit is contained in:
parent
9cfe9342a7
commit
c73aa3aa0d
@ -94,10 +94,10 @@ protected:
|
||||
|
||||
void tilemap_enable_w(offs_t offset, u16 data, u16 mem_mask = ~0);
|
||||
void tile_scroll_w(offs_t offset, u16 data, u16 mem_mask = ~0);
|
||||
void background_w(offs_t offset, u16 data, u16 mem_mask = ~0);
|
||||
void foreground_w(offs_t offset, u16 data, u16 mem_mask = ~0);
|
||||
void midground_w(offs_t offset, u16 data, u16 mem_mask = ~0);
|
||||
void text_w(offs_t offset, u16 data, u16 mem_mask = ~0);
|
||||
void background_w(offs_t offset, u16 data);
|
||||
void foreground_w(offs_t offset, u16 data);
|
||||
void midground_w(offs_t offset, u16 data);
|
||||
void text_w(offs_t offset, u16 data);
|
||||
void m_videoram_private_w(offs_t offset, uint16_t data);
|
||||
|
||||
void bank_reset(int bgbank, int fgbank, int midbank, int txbank);
|
||||
|
@ -18,22 +18,22 @@ void raiden2_state::m_videoram_private_w(offs_t offset, uint16_t data)
|
||||
|
||||
if (offset < 0x800 / 2)
|
||||
{
|
||||
background_w(offset, data, 0xffff);
|
||||
background_w(offset, data);
|
||||
}
|
||||
else if (offset < 0x1000 /2)
|
||||
{
|
||||
offset -= 0x800 / 2;
|
||||
foreground_w(offset, data, 0xffff);
|
||||
foreground_w(offset, data);
|
||||
}
|
||||
else if (offset < 0x1800/2)
|
||||
{
|
||||
offset -= 0x1000 / 2;
|
||||
midground_w(offset, data, 0xffff);
|
||||
midground_w(offset, data);
|
||||
}
|
||||
else if (offset < 0x2800/2)
|
||||
{
|
||||
offset -= 0x1800 / 2;
|
||||
text_w(offset, data, 0xffff);
|
||||
text_w(offset, data);
|
||||
}
|
||||
}
|
||||
|
||||
@ -148,28 +148,40 @@ void raiden2_state::draw_sprites(const rectangle &cliprect)
|
||||
|
||||
}
|
||||
|
||||
void raiden2_state::background_w(offs_t offset, u16 data, u16 mem_mask)
|
||||
void raiden2_state::background_w(offs_t offset, u16 data)
|
||||
{
|
||||
COMBINE_DATA(&m_back_data[offset]);
|
||||
m_background_layer->mark_tile_dirty(offset);
|
||||
if (m_back_data[offset] != data)
|
||||
{
|
||||
m_back_data[offset] = data;
|
||||
m_background_layer->mark_tile_dirty(offset);
|
||||
}
|
||||
}
|
||||
|
||||
void raiden2_state::midground_w(offs_t offset, u16 data, u16 mem_mask)
|
||||
void raiden2_state::midground_w(offs_t offset, u16 data)
|
||||
{
|
||||
COMBINE_DATA(&m_mid_data[offset]);
|
||||
m_midground_layer->mark_tile_dirty(offset);
|
||||
if (m_mid_data[offset] != data)
|
||||
{
|
||||
m_mid_data[offset] = data;
|
||||
m_midground_layer->mark_tile_dirty(offset);
|
||||
}
|
||||
}
|
||||
|
||||
void raiden2_state::foreground_w(offs_t offset, u16 data, u16 mem_mask)
|
||||
void raiden2_state::foreground_w(offs_t offset, u16 data)
|
||||
{
|
||||
COMBINE_DATA(&m_fore_data[offset]);
|
||||
m_foreground_layer->mark_tile_dirty(offset);
|
||||
if (m_fore_data[offset] != data)
|
||||
{
|
||||
m_fore_data[offset] = data;
|
||||
m_foreground_layer->mark_tile_dirty(offset);
|
||||
}
|
||||
}
|
||||
|
||||
void raiden2_state::text_w(offs_t offset, u16 data, u16 mem_mask)
|
||||
void raiden2_state::text_w(offs_t offset, u16 data)
|
||||
{
|
||||
COMBINE_DATA(&m_text_data[offset]);
|
||||
m_text_layer->mark_tile_dirty(offset);
|
||||
if (m_text_data[offset] != data)
|
||||
{
|
||||
m_text_data[offset] = data;
|
||||
m_text_layer->mark_tile_dirty(offset);
|
||||
}
|
||||
}
|
||||
|
||||
void raiden2_state::tilemap_enable_w(offs_t offset, u16 data, u16 mem_mask)
|
||||
|
Loading…
Reference in New Issue
Block a user