UINT32 backfire_state::screen_update_backfire_right(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { //FIXME: flip_screen_x should not be written! flip_screen_set_no_update(1); /* screen 1 uses pf1 as the forground and pf3 as the background */ /* screen 2 uses pf2 as the foreground and pf4 as the background */ m_deco_tilegen1->pf_update(m_pf1_rowscroll, m_pf2_rowscroll); m_deco_tilegen2->pf_update(m_pf3_rowscroll, m_pf4_rowscroll); screen.priority().fill(0); bitmap.fill(0x500, cliprect); if (m_right_priority[0] == 0) { m_deco_tilegen2->tilemap_2_draw(screen, bitmap, cliprect, 0, 1); m_deco_tilegen1->tilemap_2_draw(screen, bitmap, cliprect, 0, 2); m_sprgen2->draw_sprites(bitmap, cliprect, m_spriteram_2.get(), 0x800); } else if (m_right_priority[0] == 2) { m_deco_tilegen1->tilemap_2_draw(screen, bitmap, cliprect, 0, 2); m_deco_tilegen2->tilemap_2_draw(screen, bitmap, cliprect, 0, 4); m_sprgen2->draw_sprites(bitmap, cliprect, m_spriteram_2.get(), 0x800); } else popmessage( "unknown right priority %08x", m_right_priority[0]); return 0; }
UINT32 backfire_state::screen_update_backfire_left(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { //FIXME: flip_screen_x should not be written! flip_screen_set_no_update(1); /* screen 1 uses pf1 as the forground and pf3 as the background */ /* screen 2 uses pf2 as the foreground and pf4 as the background */ deco16ic_pf_update(m_deco_tilegen1, m_pf1_rowscroll, m_pf2_rowscroll); deco16ic_pf_update(m_deco_tilegen2, m_pf3_rowscroll, m_pf4_rowscroll); machine().priority_bitmap.fill(0); bitmap.fill(0x100, cliprect); if (m_left_priority[0] == 0) { deco16ic_tilemap_1_draw(m_deco_tilegen2, bitmap, cliprect, 0, 1); deco16ic_tilemap_1_draw(m_deco_tilegen1, bitmap, cliprect, 0, 2); m_sprgen->draw_sprites(bitmap, cliprect, m_spriteram_1, 0x800); } else if (m_left_priority[0] == 2) { deco16ic_tilemap_1_draw(m_deco_tilegen1, bitmap, cliprect, 0, 2); deco16ic_tilemap_1_draw(m_deco_tilegen2, bitmap, cliprect, 0, 4); m_sprgen->draw_sprites(bitmap, cliprect, m_spriteram_1, 0x800); } else popmessage( "unknown left priority %08x", m_left_priority[0]); return 0; }
UINT32 deco156_state::screen_update_wcvol95(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) { //FIXME: flip_screen_x should not be written! flip_screen_set_no_update(1); screen.priority().fill(0); bitmap.fill(0); m_deco_tilegen1->pf_update(m_pf1_rowscroll, m_pf2_rowscroll); m_deco_tilegen1->tilemap_2_draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0); m_sprgen->draw_sprites(bitmap, cliprect, m_spriteram, 0x800); m_deco_tilegen1->tilemap_1_draw(screen, bitmap, cliprect, 0, 0); return 0; }
uint32_t deco156_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) { // sprites are flipped relative to tilemaps m_sprgen->set_flip_screen(true); screen.priority().fill(0); bitmap.fill(0); m_deco_tilegen->pf_update(m_pf1_rowscroll, m_pf2_rowscroll); m_deco_tilegen->tilemap_2_draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0); m_sprgen->draw_sprites(bitmap, cliprect, m_spriteram.get(), 0x800); m_deco_tilegen->tilemap_1_draw(screen, 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 = m_deco_tilegen1->pf_control_r(space, 0, 0xffff); flip_screen_set(BIT(flip, 7)); m_deco_tilegen1->pf_update(m_pf1_rowscroll, m_pf2_rowscroll); bitmap.fill(0, cliprect); /* not Confirmed */ screen.priority().fill(0); m_deco_tilegen1->tilemap_2_draw(screen, bitmap, cliprect, 0, 2); m_deco_tilegen1->tilemap_1_draw(screen, bitmap, cliprect, 0, 4); m_sprgen->draw_sprites(bitmap, cliprect, 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)); m_sprgen->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); m_sprgen->inefficient_copy_sprite_bitmap(bitmap, cliprect, 0x0800, 0x0800, 0x200, 0x1ff); deco16ic_tilemap_1_draw(m_deco_tilegen1, bitmap, cliprect, 0, 0); m_sprgen->inefficient_copy_sprite_bitmap(bitmap, cliprect, 0x0000, 0x0800, 0x200, 0x1ff); return 0; }