// license:BSD-3-Clause // copyright-holders:Luca Elia, David Haywood /*************************************************************************** (legacy metro.cpp, currently contains Blazing Tornado overrides, to be moved into its own driver file!) ***************************************************************************/ #include "emu.h" #include "includes/metro.h" TILE_GET_INFO_MEMBER(metro_state::metro_k053936_get_tile_info) { int code = m_k053936_ram[tile_index]; SET_TILE_INFO_MEMBER(4, code & 0x7fff, 0xe, 0); } TILE_GET_INFO_MEMBER(metro_state::metro_k053936_gstrik2_get_tile_info) { int code = m_k053936_ram[tile_index]; SET_TILE_INFO_MEMBER(4, (code & 0x7fff)>>2, 0xe, 0); } WRITE16_MEMBER(metro_state::metro_k053936_w) { COMBINE_DATA(&m_k053936_ram[offset]); m_k053936_tilemap->mark_tile_dirty(offset); } TILEMAP_MAPPER_MEMBER(metro_state::tilemap_scan_gstrik2) { /* logical (col,row) -> memory offset */ int val; val = (row & 0x3f) * (256 * 2) + (col * 2); if (row & 0x40) val += 1; if (row & 0x80) val += 256; return val; } VIDEO_START_MEMBER(metro_state,blzntrnd) { m_k053936_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(metro_state::metro_k053936_get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 256, 512); m_screen->register_screen_bitmap(m_vdp_bitmap); } VIDEO_START_MEMBER(metro_state,gstrik2) { m_k053936_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(metro_state::metro_k053936_gstrik2_get_tile_info),this), tilemap_mapper_delegate(FUNC(metro_state::tilemap_scan_gstrik2),this), 16, 16, 128, 256); m_screen->register_screen_bitmap(m_vdp_bitmap); } uint32_t metro_state::screen_update_psac_vdp2_mix(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { /* TODO: bit 5 of reg 7 is off when ROZ is supposed to be disabled * (Blazing Tornado title screen/character select/ending and Grand Striker 2 title/how to play transition) */ bitmap.fill(m_vdp2->get_background_pen(), cliprect); m_k053936->zoom_draw(screen, bitmap, cliprect, m_k053936_tilemap, 0, 0, 1); m_vdp2->screen_update(screen, m_vdp_bitmap, cliprect); copybitmap_trans(bitmap, m_vdp_bitmap, 0, 0, 0, 0, cliprect, m_vdp2->get_background_pen()); return 0; }