UINT32 cbuster_state::screen_update_twocrude(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) { address_space &space = machine().driver_data()->generic_space(); UINT16 flip = deco16ic_pf_control_r(m_deco_tilegen1, space, 0, 0xffff); flip_screen_set(!BIT(flip, 7)); machine().device<decospr_device>("spritegen")->draw_sprites(bitmap, cliprect, m_spriteram16_buffer, 0x400); deco16ic_pf_update(m_deco_tilegen1, m_pf1_rowscroll, m_pf2_rowscroll); deco16ic_pf_update(m_deco_tilegen2, m_pf3_rowscroll, m_pf4_rowscroll); /* Draw playfields & sprites */ deco16ic_tilemap_2_draw(m_deco_tilegen2, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0); machine().device<decospr_device>("spritegen")->inefficient_copy_sprite_bitmap(bitmap, cliprect, 0x0800, 0x0900, 0x100, 0x0ff); machine().device<decospr_device>("spritegen")->inefficient_copy_sprite_bitmap(bitmap, cliprect, 0x0900, 0x0900, 0x500, 0x0ff); if (m_pri) { deco16ic_tilemap_2_draw(m_deco_tilegen1, bitmap, cliprect, 0, 0); deco16ic_tilemap_1_draw(m_deco_tilegen2, bitmap, cliprect, 0, 0); } else { deco16ic_tilemap_1_draw(m_deco_tilegen2, bitmap, cliprect, 0, 0); deco16ic_tilemap_2_draw(m_deco_tilegen1, bitmap, cliprect, 0, 0); } machine().device<decospr_device>("spritegen")->inefficient_copy_sprite_bitmap(bitmap, cliprect, 0x0000, 0x0900, 0x100, 0x0ff); machine().device<decospr_device>("spritegen")->inefficient_copy_sprite_bitmap(bitmap, cliprect, 0x0100, 0x0900, 0x500, 0x0ff); deco16ic_tilemap_1_draw(m_deco_tilegen1, bitmap, cliprect, 0, 0); return 0; }
UINT32 boogwing_state::screen_update_boogwing(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) { address_space &space = machine().driver_data()->generic_space(); UINT16 flip = deco16ic_pf_control_r(m_deco_tilegen1, space, 0, 0xffff); UINT16 priority = decocomn_priority_r(m_decocomn, space, 0, 0xffff); /* Draw sprite planes to bitmaps for later mixing */ machine().device<decospr_device>("spritegen2")->draw_sprites(bitmap, cliprect, m_spriteram2->buffer(), 0x400, true); machine().device<decospr_device>("spritegen1")->draw_sprites(bitmap, cliprect, m_spriteram->buffer(), 0x400, true); flip_screen_set(BIT(flip, 7)); deco16ic_pf_update(m_deco_tilegen1, m_pf1_rowscroll, m_pf2_rowscroll); deco16ic_pf_update(m_deco_tilegen2, m_pf3_rowscroll, m_pf4_rowscroll); /* Draw playfields */ bitmap.fill(machine().pens[0x400], cliprect); /* pen not confirmed */ machine().priority_bitmap.fill(0); // bit&0x8 is definitely some kind of palette effect // bit&0x4 combines playfields if ((priority & 0x7) == 0x5) { deco16ic_tilemap_2_draw(m_deco_tilegen1, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0); deco16ic_tilemap_12_combine_draw(m_deco_tilegen2, bitmap, cliprect, 0, 32); } else if ((priority & 0x7) == 0x1 || (priority & 0x7) == 0x2) { deco16ic_tilemap_2_draw(m_deco_tilegen2, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0); deco16ic_tilemap_2_draw(m_deco_tilegen1, bitmap, cliprect, 0, 8); deco16ic_tilemap_1_draw(m_deco_tilegen2, bitmap, cliprect, 0, 32); } else if ((priority & 0x7) == 0x3) { deco16ic_tilemap_2_draw(m_deco_tilegen2, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0); deco16ic_tilemap_2_draw(m_deco_tilegen1, bitmap, cliprect, 0, 8); // This mode uses playfield 3 to shadow sprites & playfield 2 (instead of // regular alpha-blending, the destination is inverted). Not yet implemented. // deco16ic_tilemap_3_draw(m_deco_tilegen1, bitmap, cliprect, TILEMAP_DRAW_ALPHA(0x80), 32); } else { deco16ic_tilemap_2_draw(m_deco_tilegen2, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0); deco16ic_tilemap_1_draw(m_deco_tilegen2, bitmap, cliprect, 0, 8); deco16ic_tilemap_2_draw(m_deco_tilegen1, bitmap, cliprect, 0, 32); } mix_boogwing(machine(), bitmap,cliprect); deco16ic_tilemap_1_draw(m_deco_tilegen1, bitmap, cliprect, 0, 0); return 0; }
UINT32 supbtime_state::screen_update_supbtime(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { address_space &space = machine().driver_data()->generic_space(); UINT16 flip = deco16ic_pf_control_r(m_deco_tilegen1, space, 0, 0xffff); flip_screen_set(BIT(flip, 7)); deco16ic_pf_update(m_deco_tilegen1, m_pf1_rowscroll, m_pf2_rowscroll); bitmap.fill(768, cliprect); deco16ic_tilemap_2_draw(m_deco_tilegen1, bitmap, cliprect, 0, 0); m_sprgen->draw_sprites(bitmap, cliprect, m_spriteram, 0x400); deco16ic_tilemap_1_draw(m_deco_tilegen1, bitmap, cliprect, 0, 0); return 0; }
UINT32 dblewing_state::screen_update_dblewing(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { address_space &space = generic_space(); UINT16 flip = deco16ic_pf_control_r(m_deco_tilegen1, space, 0, 0xffff); flip_screen_set(BIT(flip, 7)); deco16ic_pf_update(m_deco_tilegen1, m_pf1_rowscroll, m_pf2_rowscroll); bitmap.fill(0, cliprect); /* not Confirmed */ machine().priority_bitmap.fill(0); deco16ic_tilemap_2_draw(m_deco_tilegen1, bitmap, cliprect, 0, 2); deco16ic_tilemap_1_draw(m_deco_tilegen1, bitmap, cliprect, 0, 4); m_sprgen->draw_sprites(bitmap, cliprect, m_spriteram, 0x400); return 0; }
UINT32 pktgaldx_state::screen_update_pktgaldx(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { address_space &space = machine().driver_data()->generic_space(); UINT16 flip = deco16ic_pf_control_r(m_deco_tilegen1, space, 0, 0xffff); flip_screen_set(BIT(flip, 7)); deco16ic_pf_update(m_deco_tilegen1, m_pf1_rowscroll, m_pf2_rowscroll); bitmap.fill(0, cliprect); /* not Confirmed */ machine().priority_bitmap.fill(0); deco16ic_tilemap_2_draw(m_deco_tilegen1, bitmap, cliprect, 0, 0); machine().device<decospr_device>("spritegen")->draw_sprites(bitmap, cliprect, m_spriteram, 0x400, true); deco16ic_tilemap_1_draw(m_deco_tilegen1, bitmap, cliprect, 0, 0); return 0; }
static SCREEN_UPDATE_IND16(dblewing) { dblewing_state *state = screen.machine().driver_data<dblewing_state>(); UINT16 flip = deco16ic_pf_control_r(state->m_deco_tilegen1, 0, 0xffff); flip_screen_set(screen.machine(), BIT(flip, 7)); deco16ic_pf_update(state->m_deco_tilegen1, state->m_pf1_rowscroll, state->m_pf2_rowscroll); bitmap.fill(0, cliprect); /* not Confirmed */ screen.machine().priority_bitmap.fill(0); deco16ic_tilemap_2_draw(state->m_deco_tilegen1, bitmap, cliprect, 0, 2); deco16ic_tilemap_1_draw(state->m_deco_tilegen1, bitmap, cliprect, 0, 4); screen.machine().device<decospr_device>("spritegen")->draw_sprites(bitmap, cliprect, state->m_spriteram, 0x400); return 0; }
UINT32 miragemi_state::screen_update_mirage(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) { address_space &space = machine().driver_data()->generic_space(); UINT16 flip = deco16ic_pf_control_r(m_deco_tilegen1, space, 0, 0xffff); flip_screen_set(BIT(flip, 7)); machine().device<decospr_device>("spritegen")->draw_sprites(bitmap, cliprect, m_spriteram->buffer(), 0x400); deco16ic_pf_update(m_deco_tilegen1, m_pf1_rowscroll, m_pf2_rowscroll); bitmap.fill(256, cliprect); /* not verified */ deco16ic_tilemap_2_draw(m_deco_tilegen1, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0); machine().device<decospr_device>("spritegen")->inefficient_copy_sprite_bitmap(bitmap, cliprect, 0x0800, 0x0800, 0x200, 0x1ff); deco16ic_tilemap_1_draw(m_deco_tilegen1, bitmap, cliprect, 0, 0); machine().device<decospr_device>("spritegen")->inefficient_copy_sprite_bitmap(bitmap, cliprect, 0x0000, 0x0800, 0x200, 0x1ff); return 0; }