summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/video/kickgoal.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/video/kickgoal.cpp')
-rw-r--r--src/mame/video/kickgoal.cpp106
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);