diff options
Diffstat (limited to 'src/mame/video/kickgoal.cpp')
-rw-r--r-- | src/mame/video/kickgoal.cpp | 106 |
1 files changed, 47 insertions, 59 deletions
diff --git a/src/mame/video/kickgoal.cpp b/src/mame/video/kickgoal.cpp index 71aa4f2f7c4..fad3864a178 100644 --- a/src/mame/video/kickgoal.cpp +++ b/src/mame/video/kickgoal.cpp @@ -6,19 +6,19 @@ #include "includes/kickgoal.h" -WRITE16_MEMBER(kickgoal_state::kickgoal_fgram_w) +WRITE16_MEMBER(kickgoal_state::fgram_w) { COMBINE_DATA(&m_fgram[offset]); m_fgtm->mark_tile_dirty(offset / 2); } -WRITE16_MEMBER(kickgoal_state::kickgoal_bgram_w) +WRITE16_MEMBER(kickgoal_state::bgram_w) { COMBINE_DATA(&m_bgram[offset]); m_bgtm->mark_tile_dirty(offset / 2); } -WRITE16_MEMBER(kickgoal_state::kickgoal_bg2ram_w) +WRITE16_MEMBER(kickgoal_state::bg2ram_w) { COMBINE_DATA(&m_bg2ram[offset]); m_bg2tm->mark_tile_dirty(offset / 2); @@ -27,89 +27,78 @@ WRITE16_MEMBER(kickgoal_state::kickgoal_bg2ram_w) /* FG */ TILE_GET_INFO_MEMBER(kickgoal_state::get_kickgoal_fg_tile_info) { - int tileno = m_fgram[tile_index * 2] & 0x0fff; - int color = m_fgram[tile_index * 2 + 1] & 0x000f; + u16 const tileno = m_fgram[tile_index * 2] & 0x0fff; + u16 const color = m_fgram[tile_index * 2 + 1] & 0x000f; + + SET_TILE_INFO_MEMBER(BIT(tile_index, 5) ? 3 : 0, tileno + m_fg_base, color + 0x00, 0); // similar 8x8 gfx behavior as CPS1 +} + +TILE_GET_INFO_MEMBER(kickgoal_state::get_actionhw_fg_tile_info) +{ + u16 const tileno = m_fgram[tile_index * 2] & 0x0fff; + u16 const color = m_fgram[tile_index * 2 + 1] & 0x000f; SET_TILE_INFO_MEMBER(0, tileno + m_fg_base, color + 0x00, 0); } /* BG */ -TILE_GET_INFO_MEMBER(kickgoal_state::get_kickgoal_bg_tile_info) +TILE_GET_INFO_MEMBER(kickgoal_state::get_bg_tile_info) { - int tileno = m_bgram[tile_index * 2] & m_bg_mask; - int color = m_bgram[tile_index * 2 + 1] & 0x000f; - int flipx = m_bgram[tile_index * 2 + 1] & 0x0020; - int flipy = m_bgram[tile_index * 2 + 1] & 0x0040; + u16 const tileno = m_bgram[tile_index * 2] & m_bg_mask; + u16 const color = m_bgram[tile_index * 2 + 1] & 0x000f; + bool const flipx = m_bgram[tile_index * 2 + 1] & 0x0020; + bool const flipy = m_bgram[tile_index * 2 + 1] & 0x0040; SET_TILE_INFO_MEMBER(1, tileno + m_bg_base, color + 0x10, (flipx ? TILE_FLIPX : 0) | (flipy ? TILE_FLIPY : 0)); } /* BG 2 */ -TILE_GET_INFO_MEMBER(kickgoal_state::get_kickgoal_bg2_tile_info) +TILE_GET_INFO_MEMBER(kickgoal_state::get_bg2_tile_info) { - int tileno = m_bg2ram[tile_index * 2] & m_bg2_mask; - int color = m_bg2ram[tile_index * 2 + 1] & 0x000f; - int flipx = m_bg2ram[tile_index * 2 + 1] & 0x0020; - int flipy = m_bg2ram[tile_index * 2 + 1] & 0x0040; + u16 const tileno = m_bg2ram[tile_index * 2] & m_bg2_mask; + u16 const color = m_bg2ram[tile_index * 2 + 1] & 0x000f; + bool const flipx = m_bg2ram[tile_index * 2 + 1] & 0x0020; + bool const flipy = m_bg2ram[tile_index * 2 + 1] & 0x0040; SET_TILE_INFO_MEMBER(m_bg2_region, tileno + m_bg2_base, color + 0x20, (flipx ? TILE_FLIPX : 0) | (flipy ? TILE_FLIPY : 0)); } -TILEMAP_MAPPER_MEMBER(kickgoal_state::tilemap_scan_kicksfg) +TILEMAP_MAPPER_MEMBER(kickgoal_state::tilemap_scan_8x8) { /* logical (col,row) -> memory offset */ - return col * 32 + (row & 0x1f) + ((row & 0x20) >> 5) * 0x800; + return (row & 0x1f) | ((col & 0x3f) << 5) | ((row & 0x20) << 6); } -TILEMAP_MAPPER_MEMBER(kickgoal_state::tilemap_scan_kicksbg) +TILEMAP_MAPPER_MEMBER(kickgoal_state::tilemap_scan_16x16) { /* logical (col,row) -> memory offset */ - return col * 16 + (row & 0xf) + ((row & 0x70) >> 4) * 0x400; + return (row & 0xf) | ((col & 0x3f) << 4) | ((row & 0x30) << 6); } - -TILEMAP_MAPPER_MEMBER(kickgoal_state::tilemap_scan_kicksbg2)// 16x16 tiles +TILEMAP_MAPPER_MEMBER(kickgoal_state::tilemap_scan_32x32) { /* logical (col,row) -> memory offset */ - return col * 8 + (row & 0x7) + ((row & 0x3c) >> 3) * 0x200; + return (row & 0x7) | ((col & 0x3f) << 3) | ((row & 0x38) << 6); } -TILEMAP_MAPPER_MEMBER(kickgoal_state::tilemap_scan_actionhwbg2)// 32x32 tiles +void kickgoal_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect) { - /* logical (col,row) -> memory offset */ - return col * 16 + (row & 0xf) + ((row & 0x70) >> 4) * 0x400; -} - - - - - - - - - -void kickgoal_state::kickgoal_draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect) -{ - uint16_t *spriteram = m_spriteram; - gfx_element *gfx = m_gfxdecode->gfx(1); - int offs; - - for (offs = 0; offs < m_spriteram.bytes() / 2; offs += 4) + for (int offs = 0; offs < m_spriteram.bytes() / 2; offs += 4) { - int xpos = spriteram[offs + 3]; - int ypos = spriteram[offs + 0] & 0x00ff; - int tileno = spriteram[offs + 2] & 0x3fff; - int flipx = spriteram[offs + 1] & 0x0020; - int color = spriteram[offs + 1] & 0x000f; + int xpos = m_spriteram[offs + 3]; + int ypos = m_spriteram[offs + 0] & 0x00ff; + u16 const tileno = m_spriteram[offs + 2] & 0x3fff; + bool const flipx = m_spriteram[offs + 1] & 0x0020; + u16 const color = m_spriteram[offs + 1] & 0x000f; - if (spriteram[offs + 0] & 0x0100) break; + if (m_spriteram[offs + 0] & 0x0100) break; ypos = 0x110 - ypos; - gfx->transpen(bitmap,cliprect, - tileno+m_sprbase, + m_gfxdecode->gfx(1)->transpen(bitmap,cliprect, + tileno + m_sprbase, 0x30 + color, flipx,0, xpos-16+4,ypos-32,15); @@ -129,9 +118,9 @@ VIDEO_START_MEMBER(kickgoal_state,kickgoal) m_bg2_base = 0x2000 / 4; m_bg2_mask = (0x2000/4) - 1; - m_fgtm = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(kickgoal_state::get_kickgoal_fg_tile_info),this), tilemap_mapper_delegate(FUNC(kickgoal_state::tilemap_scan_kicksfg),this), 8, 8, 64, 64); - m_bgtm = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(kickgoal_state::get_kickgoal_bg_tile_info),this), tilemap_mapper_delegate(FUNC(kickgoal_state::tilemap_scan_kicksbg),this), 16, 16, 64, 64); - m_bg2tm = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(kickgoal_state::get_kickgoal_bg2_tile_info),this), tilemap_mapper_delegate(FUNC(kickgoal_state::tilemap_scan_kicksbg2),this), 32, 32, 64, 64); + m_fgtm = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(kickgoal_state::get_kickgoal_fg_tile_info),this), tilemap_mapper_delegate(FUNC(kickgoal_state::tilemap_scan_8x8),this), 8, 8, 64, 64); + m_bgtm = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(kickgoal_state::get_bg_tile_info),this), tilemap_mapper_delegate(FUNC(kickgoal_state::tilemap_scan_16x16),this), 16, 16, 64, 64); + m_bg2tm = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(kickgoal_state::get_bg2_tile_info),this), tilemap_mapper_delegate(FUNC(kickgoal_state::tilemap_scan_32x32),this), 32, 32, 64, 64); m_fgtm->set_transparent_pen(15); m_bgtm->set_transparent_pen(15); @@ -149,17 +138,16 @@ VIDEO_START_MEMBER(kickgoal_state,actionhw) m_bg2_base = 0x2000; m_bg2_mask = 0x2000 - 1; - m_fgtm = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(kickgoal_state::get_kickgoal_fg_tile_info),this), tilemap_mapper_delegate(FUNC(kickgoal_state::tilemap_scan_kicksfg),this), 8, 8, 64, 64); - m_bgtm = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(kickgoal_state::get_kickgoal_bg_tile_info),this), tilemap_mapper_delegate(FUNC(kickgoal_state::tilemap_scan_kicksbg),this), 16, 16, 64, 64); - m_bg2tm = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(kickgoal_state::get_kickgoal_bg2_tile_info),this), tilemap_mapper_delegate(FUNC(kickgoal_state::tilemap_scan_actionhwbg2),this), 16, 16, 64, 64); + m_fgtm = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(kickgoal_state::get_actionhw_fg_tile_info),this), tilemap_mapper_delegate(FUNC(kickgoal_state::tilemap_scan_8x8),this), 8, 8, 64, 64); + m_bgtm = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(kickgoal_state::get_bg_tile_info),this), tilemap_mapper_delegate(FUNC(kickgoal_state::tilemap_scan_16x16),this), 16, 16, 64, 64); + m_bg2tm = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(kickgoal_state::get_bg2_tile_info),this), tilemap_mapper_delegate(FUNC(kickgoal_state::tilemap_scan_16x16),this), 16, 16, 64, 64); m_fgtm->set_transparent_pen(15); m_bgtm->set_transparent_pen(15); } - -uint32_t kickgoal_state::screen_update_kickgoal(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +u32 kickgoal_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { /* set scroll */ m_fgtm->set_scrollx(0, m_scrram[0]); @@ -173,7 +161,7 @@ uint32_t kickgoal_state::screen_update_kickgoal(screen_device &screen, bitmap_in m_bg2tm->draw(screen, bitmap, cliprect, 0, 0); m_bgtm->draw(screen, bitmap, cliprect, 0, 0); - kickgoal_draw_sprites(bitmap, cliprect); + draw_sprites(bitmap, cliprect); m_fgtm->draw(screen, bitmap, cliprect, 0, 0); |