summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/video/tumbleb.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/video/tumbleb.cpp')
-rw-r--r--src/mame/video/tumbleb.cpp487
1 files changed, 0 insertions, 487 deletions
diff --git a/src/mame/video/tumbleb.cpp b/src/mame/video/tumbleb.cpp
deleted file mode 100644
index a515f219f7d..00000000000
--- a/src/mame/video/tumbleb.cpp
+++ /dev/null
@@ -1,487 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:David Haywood,Bryan McPhail
-/***************************************************************************
-
- Tumblepop (bootlegs) and similar hardware
- Video emulation - Bryan McPhail, mish@tendril.co.uk
-
-*********************************************************************
-
-The original uses Data East custom chip 55 for backgrounds,
-custom chip 52 for sprites. The bootlegs use generic chips to perform similar
-functions
-
-Tumblepop is one of few games to take advantage of the playfields ability
-to switch between 8*8 tiles and 16*16 tiles.
-
-***************************************************************************/
-
-#include "emu.h"
-#include "includes/tumbleb.h"
-
-/******************************************************************************/
-
-
-/******************************************************************************/
-
-WRITE16_MEMBER(tumbleb_state::bcstory_tilebank_w)
-{
- data &= mem_mask;
-
- m_tilebank = data;
- m_pf1_tilemap->mark_all_dirty();
- m_pf1_alt_tilemap->mark_all_dirty();
- m_pf2_tilemap->mark_all_dirty();
-}
-
-WRITE16_MEMBER(tumbleb_state::chokchok_tilebank_w)
-{
- data &= mem_mask;
-
- m_tilebank = data << 1;
- m_pf1_tilemap->mark_all_dirty();
- m_pf1_alt_tilemap->mark_all_dirty();
- m_pf2_tilemap->mark_all_dirty();
-}
-
-WRITE16_MEMBER(tumbleb_state::wlstar_tilebank_w)
-{
- /* it just writes 0000 or ffff */
- m_tilebank = data & 0x4000;
- m_pf1_tilemap->mark_all_dirty();
- m_pf1_alt_tilemap->mark_all_dirty();
- m_pf2_tilemap->mark_all_dirty();
-}
-
-
-WRITE16_MEMBER(tumbleb_state::suprtrio_tilebank_w)
-{
- data &= mem_mask;
-
- m_tilebank = data << 14; // shift it here, makes using bcstory_tilebank easier
- m_pf1_tilemap->mark_all_dirty();
- m_pf1_alt_tilemap->mark_all_dirty();
- m_pf2_tilemap->mark_all_dirty();
-}
-
-
-WRITE16_MEMBER(tumbleb_state::tumblepb_pf1_data_w)
-{
- COMBINE_DATA(&m_pf1_data[offset]);
- m_pf1_tilemap->mark_tile_dirty(offset);
- m_pf1_alt_tilemap->mark_tile_dirty(offset);
-}
-
-WRITE16_MEMBER(tumbleb_state::tumblepb_pf2_data_w)
-{
- COMBINE_DATA(&m_pf2_data[offset]);
- m_pf2_tilemap->mark_tile_dirty(offset);
-
- if (m_pf2_alt_tilemap)
- m_pf2_alt_tilemap->mark_tile_dirty(offset);
-}
-
-WRITE16_MEMBER(tumbleb_state::fncywld_pf1_data_w)
-{
- COMBINE_DATA(&m_pf1_data[offset]);
- m_pf1_tilemap->mark_tile_dirty(offset / 2);
- m_pf1_alt_tilemap->mark_tile_dirty(offset / 2);
-}
-
-WRITE16_MEMBER(tumbleb_state::fncywld_pf2_data_w)
-{
- COMBINE_DATA(&m_pf2_data[offset]);
- m_pf2_tilemap->mark_tile_dirty(offset / 2);
-}
-
-WRITE16_MEMBER(tumbleb_state::tumblepb_control_0_w)
-{
- COMBINE_DATA(&m_control_0[offset]);
-}
-
-
-WRITE16_MEMBER(tumbleb_state::pangpang_pf1_data_w)
-{
- COMBINE_DATA(&m_pf1_data[offset]);
- m_pf1_tilemap->mark_tile_dirty(offset / 2);
- m_pf1_alt_tilemap->mark_tile_dirty(offset / 2);
-}
-
-WRITE16_MEMBER(tumbleb_state::pangpang_pf2_data_w)
-{
- COMBINE_DATA(&m_pf2_data[offset]);
- m_pf2_tilemap->mark_tile_dirty(offset / 2);
-
- if (m_pf2_alt_tilemap)
- m_pf2_alt_tilemap->mark_tile_dirty(offset / 2);
-}
-
-/******************************************************************************/
-
-TILEMAP_MAPPER_MEMBER(tumbleb_state::tumblep_scan)
-{
- /* logical (col,row) -> memory offset */
- return (col & 0x1f) + ((row & 0x1f) << 5) + ((col & 0x60) << 5);
-}
-
-inline void tumbleb_state::get_bg_tile_info( tile_data &tileinfo, int tile_index, int gfx_bank, uint16_t *gfx_base)
-{
- int data = gfx_base[tile_index];
-
- SET_TILE_INFO_MEMBER(gfx_bank,
- (data & 0x0fff) | (m_tilebank >> 2),
- data >> 12,
- 0);
-}
-
-TILE_GET_INFO_MEMBER(tumbleb_state::get_bg1_tile_info){ get_bg_tile_info(tileinfo, tile_index, 2, m_pf1_data); }
-TILE_GET_INFO_MEMBER(tumbleb_state::get_bg2_tile_info){ get_bg_tile_info(tileinfo, tile_index, 1, m_pf2_data); }
-
-TILE_GET_INFO_MEMBER(tumbleb_state::get_fg_tile_info)
-{
- int data = m_pf1_data[tile_index];
-
- SET_TILE_INFO_MEMBER(0,
- (data & 0x0fff) | m_tilebank,
- data >> 12,
- 0);
-}
-
-inline void tumbleb_state::get_fncywld_bg_tile_info( tile_data &tileinfo, int tile_index, int gfx_bank, uint16_t *gfx_base)
-{
- int data = gfx_base[tile_index * 2];
- int attr = gfx_base[tile_index * 2 + 1];
-
- SET_TILE_INFO_MEMBER(gfx_bank,
- data & 0x1fff,
- attr & 0x1f,
- 0);
-}
-
-TILE_GET_INFO_MEMBER(tumbleb_state::get_fncywld_bg1_tile_info){ get_fncywld_bg_tile_info(tileinfo, tile_index, 2, m_pf1_data); }
-TILE_GET_INFO_MEMBER(tumbleb_state::get_fncywld_bg2_tile_info){ get_fncywld_bg_tile_info(tileinfo, tile_index, 1, m_pf2_data); }
-
-TILE_GET_INFO_MEMBER(tumbleb_state::get_fncywld_fg_tile_info)
-{
- int data = m_pf1_data[tile_index * 2];
- int attr = m_pf1_data[tile_index * 2 + 1];
-
- SET_TILE_INFO_MEMBER(0,
- data & 0x1fff,
- attr & 0x1f,
- 0);
-}
-
-
-inline void tumbleb_state::pangpang_get_bg_tile_info( tile_data &tileinfo, int tile_index, int gfx_bank, uint16_t *gfx_base )
-{
- int data = gfx_base[tile_index * 2 + 1];
- int attr = gfx_base[tile_index * 2];
-
- SET_TILE_INFO_MEMBER(gfx_bank,
- data & 0x1fff,
- (attr >>12) & 0xf,
- 0);
-}
-
-inline void tumbleb_state::pangpang_get_bg2x_tile_info( tile_data &tileinfo, int tile_index, int gfx_bank, uint16_t *gfx_base )
-{
- int data = gfx_base[tile_index * 2 + 1];
- int attr = gfx_base[tile_index * 2];
-
- SET_TILE_INFO_MEMBER(gfx_bank,
- (data & 0xfff) + 0x1000,
- (attr >>12) & 0xf,
- 0);
-}
-
-
-TILE_GET_INFO_MEMBER(tumbleb_state::pangpang_get_bg1_tile_info){ pangpang_get_bg_tile_info(tileinfo, tile_index, 2, m_pf1_data); }
-TILE_GET_INFO_MEMBER(tumbleb_state::pangpang_get_bg2_tile_info){ pangpang_get_bg2x_tile_info(tileinfo, tile_index, 1, m_pf2_data); }
-
-TILE_GET_INFO_MEMBER(tumbleb_state::pangpang_get_fg_tile_info)
-{
- int data = m_pf1_data[tile_index * 2 + 1];
- int attr = m_pf1_data[tile_index * 2];
-
- SET_TILE_INFO_MEMBER(0,
- data & 0x1fff,
- (attr >> 12)& 0x1f,
- 0);
-}
-
-
-void tumbleb_state::tumbleb_tilemap_redraw()
-{
- m_pf1_tilemap->mark_all_dirty();
- m_pf1_alt_tilemap->mark_all_dirty();
- m_pf2_tilemap->mark_all_dirty();
- if (m_pf2_alt_tilemap)
- m_pf2_alt_tilemap->mark_all_dirty();
-}
-
-VIDEO_START_MEMBER(tumbleb_state,pangpang)
-{
- m_pf1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tumbleb_state::pangpang_get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32);
- m_pf1_alt_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tumbleb_state::pangpang_get_bg1_tile_info),this), tilemap_mapper_delegate(FUNC(tumbleb_state::tumblep_scan),this), 16, 16, 64, 32);
- m_pf2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tumbleb_state::pangpang_get_bg2_tile_info),this), tilemap_mapper_delegate(FUNC(tumbleb_state::tumblep_scan),this), 16, 16, 64, 32);
-
- m_pf1_tilemap->set_transparent_pen(0);
- m_pf1_alt_tilemap->set_transparent_pen(0);
-
- machine().save().register_postload(save_prepost_delegate(FUNC(tumbleb_state::tumbleb_tilemap_redraw), this));
-}
-
-
-VIDEO_START_MEMBER(tumbleb_state,tumblepb)
-{
- m_pf1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tumbleb_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32);
- m_pf1_alt_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tumbleb_state::get_bg1_tile_info),this), tilemap_mapper_delegate(FUNC(tumbleb_state::tumblep_scan),this), 16, 16, 64, 32);
- m_pf2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tumbleb_state::get_bg2_tile_info),this), tilemap_mapper_delegate(FUNC(tumbleb_state::tumblep_scan),this), 16, 16, 64, 32);
-
- m_pf1_tilemap->set_transparent_pen(0);
- m_pf1_alt_tilemap->set_transparent_pen(0);
-
- machine().save().register_postload(save_prepost_delegate(FUNC(tumbleb_state::tumbleb_tilemap_redraw), this));
-}
-
-VIDEO_START_MEMBER(tumbleb_state,sdfight)
-{
- m_pf1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tumbleb_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); // 64*64 to prevent bad tilemap wrapping? - check real behavior
- m_pf1_alt_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tumbleb_state::get_bg1_tile_info),this), tilemap_mapper_delegate(FUNC(tumbleb_state::tumblep_scan),this), 16, 16, 64, 32);
- m_pf2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tumbleb_state::get_bg2_tile_info),this), tilemap_mapper_delegate(FUNC(tumbleb_state::tumblep_scan),this), 16, 16, 64, 32);
-
- m_pf1_tilemap->set_transparent_pen(0);
- m_pf1_alt_tilemap->set_transparent_pen(0);
-
- machine().save().register_postload(save_prepost_delegate(FUNC(tumbleb_state::tumbleb_tilemap_redraw), this));
-}
-
-VIDEO_START_MEMBER(tumbleb_state,fncywld)
-{
- m_pf1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tumbleb_state::get_fncywld_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32);
- m_pf1_alt_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tumbleb_state::get_fncywld_bg1_tile_info),this), tilemap_mapper_delegate(FUNC(tumbleb_state::tumblep_scan),this), 16, 16, 64, 32);
- m_pf2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tumbleb_state::get_fncywld_bg2_tile_info),this), tilemap_mapper_delegate(FUNC(tumbleb_state::tumblep_scan),this), 16, 16, 64, 32);
-
- m_pf1_tilemap->set_transparent_pen(15);
- m_pf1_alt_tilemap->set_transparent_pen(15);
-
- machine().save().register_postload(save_prepost_delegate(FUNC(tumbleb_state::tumbleb_tilemap_redraw), this));
-}
-
-
-VIDEO_START_MEMBER(tumbleb_state,suprtrio)
-{
- m_pf1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tumbleb_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32);
- m_pf1_alt_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tumbleb_state::get_bg1_tile_info),this), tilemap_mapper_delegate(FUNC(tumbleb_state::tumblep_scan),this), 16, 16, 64, 32);
- m_pf2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tumbleb_state::get_bg2_tile_info),this), tilemap_mapper_delegate(FUNC(tumbleb_state::tumblep_scan),this), 16, 16, 64, 32);
-
- m_pf1_alt_tilemap->set_transparent_pen(0);
-
- machine().save().register_postload(save_prepost_delegate(FUNC(tumbleb_state::tumbleb_tilemap_redraw), this));
-}
-
-/******************************************************************************/
-
-void tumbleb_state::tumbleb_draw_common(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int pf1x_offs, int pf1y_offs, int pf2x_offs, int pf2y_offs)
-{
- m_pf1_tilemap->set_scrollx(0, m_control_0[1] + pf1x_offs);
- m_pf1_tilemap->set_scrolly(0, m_control_0[2] + pf1y_offs);
- m_pf1_alt_tilemap->set_scrollx(0, m_control_0[1] + pf1x_offs);
- m_pf1_alt_tilemap->set_scrolly(0, m_control_0[2] + pf1y_offs);
- m_pf2_tilemap->set_scrollx(0, m_control_0[3] + pf2x_offs);
- m_pf2_tilemap->set_scrolly(0, m_control_0[4] + pf2y_offs);
-
- m_pf2_tilemap->draw(screen, bitmap, cliprect, 0, 0);
-
- if (m_control_0[6] & 0x80)
- m_pf1_tilemap->draw(screen, bitmap, cliprect, 0, 0);
- else
- m_pf1_alt_tilemap->draw(screen, bitmap, cliprect, 0, 0);
-
- m_sprgen->set_flip_screen(flip_screen() != 0);
- m_sprgen->draw_sprites(bitmap, cliprect, m_spriteram, m_spriteram.bytes()/2);
-}
-
-uint32_t tumbleb_state::screen_update_tumblepb(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
-{
- int offs, offs2;
-
- flip_screen_set(m_control_0[0] & 0x80);
-
- if (flip_screen())
- offs = 1;
- else
- offs = -1;
-
- if (flip_screen())
- offs2 = -3;
- else
- offs2 = -5;
-
- tumbleb_draw_common(screen, bitmap, cliprect, offs2, 0, offs, 0);
-
- return 0;
-}
-
-uint32_t tumbleb_state::screen_update_jumpkids(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
-{
- int offs, offs2;
-
- flip_screen_set(m_control_0[0] & 0x80);
-
- if (flip_screen())
- offs = 1;
- else
- offs = -1;
-
- if (flip_screen())
- offs2 = -3;
- else
- offs2 = -5;
-
- tumbleb_draw_common(screen, bitmap, cliprect, offs2, 0, offs, 0);
- return 0;
-}
-
-uint32_t tumbleb_state::screen_update_semicom(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
-{
- int offs, offs2;
-
- flip_screen_set(m_control_0[0] & 0x80);
-
- if (flip_screen())
- offs = 1;
- else
- offs = -1;
-
- if (flip_screen())
- offs2 = -3;
- else
- offs2 = -5;
-
- tumbleb_draw_common(screen, bitmap, cliprect, offs2, 0, offs, 0);
- return 0;
-}
-
-uint32_t tumbleb_state::screen_update_semicom_altoffsets(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
-{
- int offsx, offsy, offsx2;
-
- flip_screen_set(m_control_0[0] & 0x80);
-
- offsx = -1;
- offsy = 2;
- offsx2 = -5;
-
- tumbleb_draw_common(screen, bitmap, cliprect, offsx2, 0, offsx, offsy);
-
- return 0;
-}
-
-uint32_t tumbleb_state::screen_update_bcstory(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
-{
- int offs, offs2;
-
- flip_screen_set(m_control_0[0] & 0x80);
-
- /* not sure of this */
- if (flip_screen())
- offs = 1;
- else
- offs = 8;
-
- /* not sure of this */
- if (flip_screen())
- offs2 = -3;
- else
- offs2 = 8;
-
- tumbleb_draw_common(screen, bitmap, cliprect, offs2, 0, offs, 0);
- return 0;
-}
-
-uint32_t tumbleb_state::screen_update_semibase(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
-{
- int offs, offs2;
-
- flip_screen_set(m_control_0[0] & 0x80);
-
- offs = -1;
- offs2 = -2;
-
- tumbleb_draw_common(screen, bitmap, cliprect, offs2, 0, offs, 0);
-
- return 0;
-}
-
-uint32_t tumbleb_state::screen_update_sdfight(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
-{
- int offs, offs2;
-
- flip_screen_set(m_control_0[0] & 0x80);
-
- offs = -1;
- offs2 = -5; // foreground scroll..
-
- tumbleb_draw_common(screen, bitmap, cliprect, offs2, -16, offs, 0);
-
- return 0;
-}
-
-uint32_t tumbleb_state::screen_update_fncywld(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
-{
- int offs, offs2;
-
- flip_screen_set(m_control_0[0] & 0x80);
-
- if (flip_screen())
- offs = 1;
- else
- offs = -1;
-
- if (flip_screen())
- offs2 = -3;
- else
- offs2 = -5;
-
- tumbleb_draw_common(screen, bitmap, cliprect, offs2, 0, offs, 0);
-
- return 0;
-}
-
-uint32_t tumbleb_state::screen_update_pangpang(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
-{
- int offs, offs2;
-
- flip_screen_set(m_control_0[0] & 0x80);
-
- if (flip_screen())
- offs = 1;
- else
- offs = -1;
-
- if (flip_screen())
- offs2 = -3;
- else
- offs2 = -5;
-
- tumbleb_draw_common(screen, bitmap, cliprect, offs2, 0, offs, 0);
- return 0;
-}
-
-
-
-uint32_t tumbleb_state::screen_update_suprtrio(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
-{
- m_pf1_alt_tilemap->set_scrollx(0, -m_control[1] - 6);
- m_pf1_alt_tilemap->set_scrolly(0, -m_control[2]);
- m_pf2_tilemap->set_scrollx(0, -m_control[3] - 2);
- m_pf2_tilemap->set_scrolly(0, -m_control[4]);
-
- m_pf2_tilemap->draw(screen, bitmap, cliprect, 0, 0);
- m_pf1_alt_tilemap->draw(screen, bitmap, cliprect, 0, 0);
-
- m_sprgen->draw_sprites(bitmap, cliprect, m_spriteram, m_spriteram.bytes()/2);
- return 0;
-}