diff options
Diffstat (limited to 'src/mame/video/gijoe.c')
-rw-r--r-- | src/mame/video/gijoe.c | 73 |
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; } |