summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/video/asuka.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/video/asuka.cpp')
-rw-r--r--src/mame/video/asuka.cpp42
1 files changed, 11 insertions, 31 deletions
diff --git a/src/mame/video/asuka.cpp b/src/mame/video/asuka.cpp
index 33f98594e31..7fc322895ed 100644
--- a/src/mame/video/asuka.cpp
+++ b/src/mame/video/asuka.cpp
@@ -8,10 +8,16 @@
SPRITE READ AND WRITE HANDLERS
**************************************************************/
-void asuka_state::asuka_spritectrl_w(u16 data)
+void asuka_state::asuka_colpri_cb(u32 &sprite_colbank, u32 &pri_mask, u16 sprite_ctrl)
{
- /* Bits 2-5 are color bank; in asuka games bit 0 is global priority */
- m_pc090oj->set_sprite_ctrl(((data & 0x3c) >> 2) | ((data & 0x1) << 15));
+ sprite_colbank = (sprite_ctrl & 0x3c) << 2;
+ pri_mask = (sprite_ctrl & 1) ? 0xfc : 0xf0; /* variable sprite/tile priority */
+}
+
+void asuka_state::bonzeadv_colpri_cb(u32 &sprite_colbank, u32 &pri_mask, u16 sprite_ctrl)
+{
+ sprite_colbank = (sprite_ctrl & 0x3c) << 2;
+ pri_mask = 0xf0; /* sprites over top bg layer */
}
@@ -19,32 +25,7 @@ void asuka_state::asuka_spritectrl_w(u16 data)
SCREEN REFRESH
**************************************************************/
-uint32_t asuka_state::screen_update_asuka(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
-{
- u8 layer[3];
-
- m_tc0100scn->tilemap_update();
-
- layer[0] = m_tc0100scn->bottomlayer();
- layer[1] = layer[0] ^ 1;
- layer[2] = 2;
-
- screen.priority().fill(0, cliprect);
-
- /* Ensure screen blanked even when bottom layer not drawn due to disable bit */
- bitmap.fill(0, cliprect);
-
- m_tc0100scn->tilemap_draw(screen, bitmap, cliprect, layer[0], TILEMAP_DRAW_OPAQUE, 1);
- m_tc0100scn->tilemap_draw(screen, bitmap, cliprect, layer[1], 0, 2);
- m_tc0100scn->tilemap_draw(screen, bitmap, cliprect, layer[2], 0, 4);
-
- /* Sprites may be over or under top bg layer */
- m_pc090oj->draw_sprites(bitmap, cliprect, screen.priority(), 2);
- return 0;
-}
-
-
-uint32_t asuka_state::screen_update_bonzeadv(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+uint32_t asuka_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
u8 layer[3];
@@ -63,7 +44,6 @@ uint32_t asuka_state::screen_update_bonzeadv(screen_device &screen, bitmap_ind16
m_tc0100scn->tilemap_draw(screen, bitmap, cliprect, layer[1], 0, 2);
m_tc0100scn->tilemap_draw(screen, bitmap, cliprect, layer[2], 0, 4);
- /* Sprites are always over both bg layers */
- m_pc090oj->draw_sprites(bitmap, cliprect, screen.priority(), 0);
+ m_pc090oj->draw_sprites(screen, bitmap, cliprect);
return 0;
}