summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/video/slapshot.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/video/slapshot.c')
-rw-r--r--src/mame/video/slapshot.c72
1 files changed, 35 insertions, 37 deletions
diff --git a/src/mame/video/slapshot.c b/src/mame/video/slapshot.c
index a13269b99af..ebd0ca1a721 100644
--- a/src/mame/video/slapshot.c
+++ b/src/mame/video/slapshot.c
@@ -427,16 +427,15 @@ static void taito_update_sprites_active_area( running_machine &machine )
}
}
-SCREEN_VBLANK( taito_no_buffer )
+void slapshot_state::screen_eof_taito_no_buffer(screen_device &screen, bool state)
{
// rising edge
- if (vblank_on)
+ if (state)
{
- slapshot_state *state = screen.machine().driver_data<slapshot_state>();
taito_update_sprites_active_area(screen.machine());
- state->m_prepare_sprites = 1;
+ m_prepare_sprites = 1;
}
}
@@ -457,9 +456,8 @@ One exception is the "puck" in early attract which is
a bg layer given priority over some sprites.
********************************************************************/
-SCREEN_UPDATE_IND16( slapshot )
+UINT32 slapshot_state::screen_update_slapshot(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- slapshot_state *state = screen.machine().driver_data<slapshot_state>();
address_space &space = screen.machine().driver_data()->generic_space();
UINT8 layer[5];
UINT8 tilepri[5];
@@ -469,40 +467,40 @@ SCREEN_UPDATE_IND16( slapshot )
#ifdef MAME_DEBUG
if (screen.machine().input().code_pressed_once (KEYCODE_Z))
{
- state->m_dislayer[0] ^= 1;
- popmessage("bg0: %01x",state->m_dislayer[0]);
+ m_dislayer[0] ^= 1;
+ popmessage("bg0: %01x",m_dislayer[0]);
}
if (screen.machine().input().code_pressed_once (KEYCODE_X))
{
- state->m_dislayer[1] ^= 1;
- popmessage("bg1: %01x",state->m_dislayer[1]);
+ m_dislayer[1] ^= 1;
+ popmessage("bg1: %01x",m_dislayer[1]);
}
if (screen.machine().input().code_pressed_once (KEYCODE_C))
{
- state->m_dislayer[2] ^= 1;
- popmessage("bg2: %01x",state->m_dislayer[2]);
+ m_dislayer[2] ^= 1;
+ popmessage("bg2: %01x",m_dislayer[2]);
}
if (screen.machine().input().code_pressed_once (KEYCODE_V))
{
- state->m_dislayer[3] ^= 1;
- popmessage("bg3: %01x",state->m_dislayer[3]);
+ m_dislayer[3] ^= 1;
+ popmessage("bg3: %01x",m_dislayer[3]);
}
if (screen.machine().input().code_pressed_once (KEYCODE_B))
{
- state->m_dislayer[4] ^= 1;
- popmessage("text: %01x",state->m_dislayer[4]);
+ m_dislayer[4] ^= 1;
+ popmessage("text: %01x",m_dislayer[4]);
}
#endif
taito_handle_sprite_buffering(screen.machine());
- tc0480scp_tilemap_update(state->m_tc0480scp);
+ tc0480scp_tilemap_update(m_tc0480scp);
- priority = tc0480scp_get_bg_priority(state->m_tc0480scp);
+ priority = tc0480scp_get_bg_priority(m_tc0480scp);
layer[0] = (priority & 0xf000) >> 12; /* tells us which bg layer is bottom */
layer[1] = (priority & 0x0f00) >> 8;
@@ -510,41 +508,41 @@ SCREEN_UPDATE_IND16( slapshot )
layer[3] = (priority & 0x000f) >> 0; /* tells us which is top */
layer[4] = 4; /* text layer always over bg layers */
- tilepri[0] = tc0360pri_r(state->m_tc0360pri, space, 4) & 0x0f; /* bg0 */
- tilepri[1] = tc0360pri_r(state->m_tc0360pri, space, 4) >> 4; /* bg1 */
- tilepri[2] = tc0360pri_r(state->m_tc0360pri, space, 5) & 0x0f; /* bg2 */
- tilepri[3] = tc0360pri_r(state->m_tc0360pri, space, 5) >> 4; /* bg3 */
+ tilepri[0] = tc0360pri_r(m_tc0360pri, space, 4) & 0x0f; /* bg0 */
+ tilepri[1] = tc0360pri_r(m_tc0360pri, space, 4) >> 4; /* bg1 */
+ tilepri[2] = tc0360pri_r(m_tc0360pri, space, 5) & 0x0f; /* bg2 */
+ tilepri[3] = tc0360pri_r(m_tc0360pri, space, 5) >> 4; /* bg3 */
/* we actually assume text layer is on top of everything anyway, but FWIW... */
- tilepri[layer[4]] = tc0360pri_r(state->m_tc0360pri, space, 7) & 0x0f; /* fg (text layer) */
+ tilepri[layer[4]] = tc0360pri_r(m_tc0360pri, space, 7) & 0x0f; /* fg (text layer) */
- spritepri[0] = tc0360pri_r(state->m_tc0360pri, space, 6) & 0x0f;
- spritepri[1] = tc0360pri_r(state->m_tc0360pri, space, 6) >> 4;
- spritepri[2] = tc0360pri_r(state->m_tc0360pri, space, 7) & 0x0f;
- spritepri[3] = tc0360pri_r(state->m_tc0360pri, space, 7) >> 4;
+ spritepri[0] = tc0360pri_r(m_tc0360pri, space, 6) & 0x0f;
+ spritepri[1] = tc0360pri_r(m_tc0360pri, space, 6) >> 4;
+ spritepri[2] = tc0360pri_r(m_tc0360pri, space, 7) & 0x0f;
+ spritepri[3] = tc0360pri_r(m_tc0360pri, space, 7) >> 4;
screen.machine().priority_bitmap.fill(0, cliprect);
bitmap.fill(0, cliprect);
#ifdef MAME_DEBUG
- if (state->m_dislayer[layer[0]] == 0)
+ if (m_dislayer[layer[0]] == 0)
#endif
- tc0480scp_tilemap_draw(state->m_tc0480scp, bitmap, cliprect, layer[0], 0, 1);
+ tc0480scp_tilemap_draw(m_tc0480scp, bitmap, cliprect, layer[0], 0, 1);
#ifdef MAME_DEBUG
- if (state->m_dislayer[layer[1]] == 0)
+ if (m_dislayer[layer[1]] == 0)
#endif
- tc0480scp_tilemap_draw(state->m_tc0480scp, bitmap, cliprect, layer[1], 0, 2);
+ tc0480scp_tilemap_draw(m_tc0480scp, bitmap, cliprect, layer[1], 0, 2);
#ifdef MAME_DEBUG
- if (state->m_dislayer[layer[2]] == 0)
+ if (m_dislayer[layer[2]] == 0)
#endif
- tc0480scp_tilemap_draw(state->m_tc0480scp, bitmap, cliprect, layer[2], 0, 4);
+ tc0480scp_tilemap_draw(m_tc0480scp, bitmap, cliprect, layer[2], 0, 4);
#ifdef MAME_DEBUG
- if (state->m_dislayer[layer[3]] == 0)
+ if (m_dislayer[layer[3]] == 0)
#endif
- tc0480scp_tilemap_draw(state->m_tc0480scp, bitmap, cliprect, layer[3], 0, 8);
+ tc0480scp_tilemap_draw(m_tc0480scp, bitmap, cliprect, layer[3], 0, 8);
{
int primasks[4] = {0,0,0,0};
@@ -568,9 +566,9 @@ SCREEN_UPDATE_IND16( slapshot )
*/
#ifdef MAME_DEBUG
- if (state->m_dislayer[layer[4]] == 0)
+ if (m_dislayer[layer[4]] == 0)
#endif
- tc0480scp_tilemap_draw(state->m_tc0480scp, bitmap, cliprect, layer[4], 0, 0);
+ tc0480scp_tilemap_draw(m_tc0480scp, bitmap, cliprect, layer[4], 0, 0);
return 0;
}