summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/video/silkroad.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/video/silkroad.cpp')
-rw-r--r--src/mame/video/silkroad.cpp90
1 files changed, 21 insertions, 69 deletions
diff --git a/src/mame/video/silkroad.cpp b/src/mame/video/silkroad.cpp
index 722dbe03c52..f9c5b4653a5 100644
--- a/src/mame/video/silkroad.cpp
+++ b/src/mame/video/silkroad.cpp
@@ -54,97 +54,49 @@ void silkroad_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, c
}
}
-
-TILE_GET_INFO_MEMBER(silkroad_state::get_fg_tile_info)
-{
- int code = ((m_vidram[tile_index] & 0xffff0000) >> 16 );
- int color = ((m_vidram[tile_index] & 0x000001f));
- int flipx = ((m_vidram[tile_index] & 0x0000080) >> 7);
-
- code += 0x18000;
-
- SET_TILE_INFO_MEMBER(0,
- code,
- color,
- TILE_FLIPYX(flipx));
-}
-
-
-
-WRITE32_MEMBER(silkroad_state::silkroad_fgram_w)
+template<int Layer>
+TILE_GET_INFO_MEMBER(silkroad_state::get_tile_info)
{
- COMBINE_DATA(&m_vidram[offset]);
- m_fg_tilemap->mark_tile_dirty(offset);
-}
+ int code = ((m_vram[Layer][tile_index] & 0xffff0000) >> 16 );
+ int color = ((m_vram[Layer][tile_index] & 0x000001f));
+ int flipx = ((m_vram[Layer][tile_index] & 0x0000080) >> 7);
-TILE_GET_INFO_MEMBER(silkroad_state::get_fg2_tile_info)
-{
- int code = ((m_vidram2[tile_index] & 0xffff0000) >> 16 );
- int color = ((m_vidram2[tile_index] & 0x000001f));
- int flipx = ((m_vidram2[tile_index] & 0x0000080) >> 7);
code += 0x18000;
- SET_TILE_INFO_MEMBER(0,
- code,
- color,
- TILE_FLIPYX(flipx));
-}
-
-
-
-WRITE32_MEMBER(silkroad_state::silkroad_fgram2_w)
-{
- COMBINE_DATA(&m_vidram2[offset]);
- m_fg2_tilemap->mark_tile_dirty(offset);
-}
-TILE_GET_INFO_MEMBER(silkroad_state::get_fg3_tile_info)
-{
- int code = ((m_vidram3[tile_index] & 0xffff0000) >> 16 );
- int color = ((m_vidram3[tile_index] & 0x000001f));
- int flipx = ((m_vidram3[tile_index] & 0x0000080) >> 7);
- code += 0x18000;
SET_TILE_INFO_MEMBER(0,
code,
color,
TILE_FLIPYX(flipx));
}
-
-
-WRITE32_MEMBER(silkroad_state::silkroad_fgram3_w)
-{
- COMBINE_DATA(&m_vidram3[offset]);
- m_fg3_tilemap->mark_tile_dirty(offset);
-}
-
void silkroad_state::video_start()
{
- m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(silkroad_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 64, 64);
- m_fg2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(silkroad_state::get_fg2_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 64, 64);
- m_fg3_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(silkroad_state::get_fg3_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 64, 64);
+ m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(silkroad_state::get_tile_info<0>),this), TILEMAP_SCAN_ROWS, 16, 16, 64, 64);
+ m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(silkroad_state::get_tile_info<1>),this), TILEMAP_SCAN_ROWS, 16, 16, 64, 64);
+ m_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(silkroad_state::get_tile_info<2>),this), TILEMAP_SCAN_ROWS, 16, 16, 64, 64);
- m_fg_tilemap->set_transparent_pen(0);
- m_fg2_tilemap->set_transparent_pen(0);
- m_fg3_tilemap->set_transparent_pen(0);
+ m_tilemap[0]->set_transparent_pen(0);
+ m_tilemap[1]->set_transparent_pen(0);
+ m_tilemap[2]->set_transparent_pen(0);
}
-uint32_t silkroad_state::screen_update_silkroad(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+uint32_t silkroad_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
screen.priority().fill(0, cliprect);
bitmap.fill(0x7c0, cliprect);
- m_fg_tilemap->set_scrollx(0, ((m_regs[0] & 0xffff0000) >> 16) );
- m_fg_tilemap->set_scrolly(0, (m_regs[0] & 0x0000ffff) >> 0 );
+ m_tilemap[0]->set_scrollx(0, ((m_regs[0] & 0xffff0000) >> 16) );
+ m_tilemap[0]->set_scrolly(0, (m_regs[0] & 0x0000ffff) >> 0 );
- m_fg3_tilemap->set_scrolly(0, (m_regs[1] & 0xffff0000) >> 16 );
- m_fg3_tilemap->set_scrollx(0, (m_regs[2] & 0xffff0000) >> 16 );
+ m_tilemap[2]->set_scrolly(0, (m_regs[1] & 0xffff0000) >> 16 );
+ m_tilemap[2]->set_scrollx(0, (m_regs[2] & 0xffff0000) >> 16 );
- m_fg2_tilemap->set_scrolly(0, ((m_regs[5] & 0xffff0000) >> 16));
- m_fg2_tilemap->set_scrollx(0, (m_regs[2] & 0x0000ffff) >> 0 );
+ m_tilemap[1]->set_scrolly(0, ((m_regs[5] & 0xffff0000) >> 16));
+ m_tilemap[1]->set_scrollx(0, (m_regs[2] & 0x0000ffff) >> 0 );
- m_fg_tilemap->draw(screen, bitmap, cliprect, 0,0);
- m_fg2_tilemap->draw(screen, bitmap, cliprect, 0,1);
- m_fg3_tilemap->draw(screen, bitmap, cliprect, 0,2);
+ m_tilemap[0]->draw(screen, bitmap, cliprect, 0,0);
+ m_tilemap[1]->draw(screen, bitmap, cliprect, 0,1);
+ m_tilemap[2]->draw(screen, bitmap, cliprect, 0,2);
draw_sprites(screen,bitmap,cliprect);
if (0)