summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/video/gijoe.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/video/gijoe.c')
-rw-r--r--src/mame/video/gijoe.c73
1 files changed, 36 insertions, 37 deletions
diff --git a/src/mame/video/gijoe.c b/src/mame/video/gijoe.c
index 5df64bc1781..a6cacfddc30 100644
--- a/src/mame/video/gijoe.c
+++ b/src/mame/video/gijoe.c
@@ -74,51 +74,50 @@ void gijoe_state::video_start()
save_item(NAME(m_layer_pri));
}
-SCREEN_UPDATE_IND16( gijoe )
+UINT32 gijoe_state::screen_update_gijoe(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- gijoe_state *state = screen.machine().driver_data<gijoe_state>();
static const int K053251_CI[4] = { K053251_CI1, K053251_CI2, K053251_CI3, K053251_CI4 };
int layer[4];
int vrc_mode, vrc_new, colorbase_new, /*primode,*/ dirty, i;
int mask = 0;
// update tile offsets
- k056832_read_avac(state->m_k056832, &vrc_mode, &vrc_new);
+ k056832_read_avac(m_k056832, &vrc_mode, &vrc_new);
if (vrc_mode)
{
for (dirty = 0xf000; dirty; dirty >>= 4)
- if ((state->m_avac_vrc & dirty) != (vrc_new & dirty))
+ if ((m_avac_vrc & dirty) != (vrc_new & dirty))
mask |= dirty;
- state->m_avac_vrc = vrc_new;
- state->m_avac_bits[0] = vrc_new << 4 & 0xf000;
- state->m_avac_bits[1] = vrc_new & 0xf000;
- state->m_avac_bits[2] = vrc_new << 8 & 0xf000;
- state->m_avac_bits[3] = vrc_new << 12 & 0xf000;
+ m_avac_vrc = vrc_new;
+ m_avac_bits[0] = vrc_new << 4 & 0xf000;
+ m_avac_bits[1] = vrc_new & 0xf000;
+ m_avac_bits[2] = vrc_new << 8 & 0xf000;
+ m_avac_bits[3] = vrc_new << 12 & 0xf000;
}
else
- state->m_avac_bits[3] = state->m_avac_bits[2] = state->m_avac_bits[1] = state->m_avac_bits[0] = 0xf000;
+ m_avac_bits[3] = m_avac_bits[2] = m_avac_bits[1] = m_avac_bits[0] = 0xf000;
// update color info and refresh tilemaps
- state->m_sprite_colorbase = k053251_get_palette_index(state->m_k053251, K053251_CI0);
+ m_sprite_colorbase = k053251_get_palette_index(m_k053251, K053251_CI0);
for (i = 0; i < 4; i++)
{
dirty = 0;
- colorbase_new = k053251_get_palette_index(state->m_k053251, K053251_CI[i]);
- if (state->m_layer_colorbase[i] != colorbase_new)
+ colorbase_new = k053251_get_palette_index(m_k053251, K053251_CI[i]);
+ if (m_layer_colorbase[i] != colorbase_new)
{
- state->m_layer_colorbase[i] = colorbase_new;
+ m_layer_colorbase[i] = colorbase_new;
dirty = 1;
}
- if (state->m_avac_occupancy[i] & mask)
+ if (m_avac_occupancy[i] & mask)
dirty = 1;
if (dirty)
{
- state->m_avac_occupancy[i] = 0;
- k056832_mark_plane_dirty(state->m_k056832, i);
+ m_avac_occupancy[i] = 0;
+ k056832_mark_plane_dirty(m_k056832, i);
}
}
@@ -128,43 +127,43 @@ SCREEN_UPDATE_IND16( gijoe )
written to the layer's X-scroll register otherwise the chip expects totally
different alignment values.
*/
- if (k056832_read_register(state->m_k056832, 0x14) == 2)
+ if (k056832_read_register(m_k056832, 0x14) == 2)
{
- k056832_set_layer_offs(state->m_k056832, 0, 2, 0);
- k056832_set_layer_offs(state->m_k056832, 1, 4, 0);
- k056832_set_layer_offs(state->m_k056832, 2, 6, 0); // 7?
- k056832_set_layer_offs(state->m_k056832, 3, 8, 0);
+ k056832_set_layer_offs(m_k056832, 0, 2, 0);
+ k056832_set_layer_offs(m_k056832, 1, 4, 0);
+ k056832_set_layer_offs(m_k056832, 2, 6, 0); // 7?
+ k056832_set_layer_offs(m_k056832, 3, 8, 0);
}
else
{
- k056832_set_layer_offs(state->m_k056832, 0, 0, 0);
- k056832_set_layer_offs(state->m_k056832, 1, 8, 0);
- k056832_set_layer_offs(state->m_k056832, 2, 14, 0);
- k056832_set_layer_offs(state->m_k056832, 3, 16, 0); // smaller?
+ k056832_set_layer_offs(m_k056832, 0, 0, 0);
+ k056832_set_layer_offs(m_k056832, 1, 8, 0);
+ k056832_set_layer_offs(m_k056832, 2, 14, 0);
+ k056832_set_layer_offs(m_k056832, 3, 16, 0); // smaller?
}
// seems to switch the K053251 between different priority modes, detail unknown
- // primode = k053251_get_priority(state->m_k053251, K053251_CI1);
+ // primode = k053251_get_priority(m_k053251, K053251_CI1);
layer[0] = 0;
- state->m_layer_pri[0] = 0; // not sure
+ m_layer_pri[0] = 0; // not sure
layer[1] = 1;
- state->m_layer_pri[1] = k053251_get_priority(state->m_k053251, K053251_CI2);
+ m_layer_pri[1] = k053251_get_priority(m_k053251, K053251_CI2);
layer[2] = 2;
- state->m_layer_pri[2] = k053251_get_priority(state->m_k053251, K053251_CI3);
+ m_layer_pri[2] = k053251_get_priority(m_k053251, K053251_CI3);
layer[3] = 3;
- state->m_layer_pri[3] = k053251_get_priority(state->m_k053251, K053251_CI4);
+ m_layer_pri[3] = k053251_get_priority(m_k053251, K053251_CI4);
- konami_sortlayers4(layer, state->m_layer_pri);
+ konami_sortlayers4(layer, m_layer_pri);
bitmap.fill(get_black_pen(screen.machine()), cliprect);
screen.machine().priority_bitmap.fill(0, cliprect);
- k056832_tilemap_draw(state->m_k056832, bitmap, cliprect, layer[0], 0, 1);
- k056832_tilemap_draw(state->m_k056832, bitmap, cliprect, layer[1], 0, 2);
- k056832_tilemap_draw(state->m_k056832, bitmap, cliprect, layer[2], 0, 4);
- k056832_tilemap_draw(state->m_k056832, bitmap, cliprect, layer[3], 0, 8);
+ k056832_tilemap_draw(m_k056832, bitmap, cliprect, layer[0], 0, 1);
+ k056832_tilemap_draw(m_k056832, bitmap, cliprect, layer[1], 0, 2);
+ k056832_tilemap_draw(m_k056832, bitmap, cliprect, layer[2], 0, 4);
+ k056832_tilemap_draw(m_k056832, bitmap, cliprect, layer[3], 0, 8);
- k053247_sprites_draw(state->m_k053246, bitmap, cliprect);
+ k053247_sprites_draw(m_k053246, bitmap, cliprect);
return 0;
}