summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author cam900 <dbtlrchl@naver.com>2018-03-29 07:29:29 +0900
committer ajrhacker <ajrhacker@users.noreply.github.com>2018-03-28 18:29:29 -0400
commit3e338cd0ec450f98b78b4dee43d65c9804b6d39e (patch)
tree1d95fc21bf5a454204cafb0adbf8f348b1138463
parentcbe6e758f898ab7c2c0b539ab87153753e95d2c2 (diff)
aerofgt.cpp Cleanups (#3402)
* aerofgt.cpp : Cleanup duplicates, Split spinbrk ROM lookup function, Fix object finder names related sprite lookup tables * aerofgt.cpp : Minor gfxdecode cleanup * aerofgt.cpp : Reduce duplicates
-rw-r--r--src/mame/drivers/aerofgt.cpp283
-rw-r--r--src/mame/includes/aerofgt.h82
-rw-r--r--src/mame/video/aerofgt.cpp466
3 files changed, 378 insertions, 453 deletions
diff --git a/src/mame/drivers/aerofgt.cpp b/src/mame/drivers/aerofgt.cpp
index 5179a71fd32..d5a94e05c27 100644
--- a/src/mame/drivers/aerofgt.cpp
+++ b/src/mame/drivers/aerofgt.cpp
@@ -128,20 +128,39 @@ WRITE8_MEMBER(aerofgt_state::karatblzbl_d7759_reset_w)
m_upd7759->reset_w(data & 0x80);
}
+template<int Layer>
+WRITE16_MEMBER(aerofgt_state::vram_w)
+{
+ COMBINE_DATA(&m_vram[Layer][offset]);
+ m_tilemap[Layer]->mark_tile_dirty(offset);
+}
+
+template<int Layer>
+WRITE16_MEMBER(aerofgt_state::scrollx_w)
+{
+ COMBINE_DATA(&m_scrollx[Layer]);
+}
+
+template<int Layer>
+WRITE16_MEMBER(aerofgt_state::scrolly_w)
+{
+ COMBINE_DATA(&m_scrolly[Layer]);
+}
+
void aerofgt_state::pspikes_map(address_map &map)
{
map(0x000000, 0x03ffff).rom();
map(0x100000, 0x10ffff).ram(); /* work RAM */
- map(0x200000, 0x203fff).ram().share("spriteram1");
- map(0xff8000, 0xff8fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg1videoram_w)).share("bg1videoram");
- map(0xffc000, 0xffc3ff).writeonly().share("spriteram3");
+ map(0x200000, 0x203fff).ram().share("sprlookupram1");
+ map(0xff8000, 0xff8fff).ram().w(this, FUNC(aerofgt_state::vram_w<0>)).share("vram.0");
+ map(0xffc000, 0xffc3ff).writeonly().share("spriteram");
map(0xffd000, 0xffdfff).ram().share("rasterram"); /* bg1 scroll registers */
map(0xffe000, 0xffefff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
map(0xfff000, 0xfff001).portr("IN0");
map(0xfff001, 0xfff001).w(this, FUNC(aerofgt_state::pspikes_palette_bank_w));
map(0xfff002, 0xfff003).portr("IN1");
map(0xfff003, 0xfff003).w(this, FUNC(aerofgt_state::pspikes_gfxbank_w));
- map(0xfff004, 0xfff005).portr("DSW").w(this, FUNC(aerofgt_state::aerofgt_bg1scrolly_w));
+ map(0xfff004, 0xfff005).portr("DSW").w(this, FUNC(aerofgt_state::scrolly_w<0>));
map(0xfff007, 0xfff007).r(this, FUNC(aerofgt_state::pending_command_r)).w(m_soundlatch, FUNC(generic_latch_8_device::write)).umask16(0x00ff);
map(0xfff400, 0xfff403).w("gga", FUNC(vsystem_gga_device::write)).umask16(0x00ff);
}
@@ -150,16 +169,16 @@ void aerofgt_state::pspikesb_map(address_map &map)
{
map(0x000000, 0x03ffff).rom();
map(0x100000, 0x10ffff).ram(); /* work RAM */
- map(0x200000, 0x203fff).ram().share("spriteram1");
+ map(0x200000, 0x203fff).ram().share("sprlookupram1");
map(0xc04000, 0xc04001).nopw();
- map(0xff8000, 0xff8fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg1videoram_w)).share("bg1videoram");
- map(0xffc000, 0xffcbff).ram().share("spriteram3");
+ map(0xff8000, 0xff8fff).ram().w(this, FUNC(aerofgt_state::vram_w<0>)).share("vram.0");
+ map(0xffc000, 0xffcbff).ram().share("spriteram");
map(0xffd000, 0xffdfff).ram().share("rasterram"); /* bg1 scroll registers */
map(0xffd200, 0xffd201).w(this, FUNC(aerofgt_state::pspikesb_gfxbank_w));
map(0xffe000, 0xffefff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
map(0xfff000, 0xfff001).portr("IN0");
map(0xfff002, 0xfff003).portr("IN1");
- map(0xfff004, 0xfff005).portr("DSW").w(this, FUNC(aerofgt_state::aerofgt_bg1scrolly_w));
+ map(0xfff004, 0xfff005).portr("DSW").w(this, FUNC(aerofgt_state::scrolly_w<0>));
map(0xfff007, 0xfff007).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
map(0xfff008, 0xfff009).w(this, FUNC(aerofgt_state::pspikesb_oki_banking_w));
map(0xfff400, 0xfff403).nopw(); // GGA access
@@ -169,20 +188,20 @@ void aerofgt_state::spikes91_map(address_map &map)
{
map(0x000000, 0x03ffff).rom();
map(0x100000, 0x10ffff).ram(); /* work RAM */
- map(0x200000, 0x203fff).ram().share("spriteram1");
+ map(0x200000, 0x203fff).ram().share("sprlookupram1");
map(0xc04000, 0xc04001).nopw();
- map(0xff8000, 0xff8fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg1videoram_w)).share("bg1videoram");
+ map(0xff8000, 0xff8fff).ram().w(this, FUNC(aerofgt_state::vram_w<0>)).share("vram.0");
map(0xffa000, 0xffbfff).ram().share("tx_tilemap_ram");
- map(0xffc000, 0xffcfff).ram().share("spriteram3");
+ map(0xffc000, 0xffcfff).ram().share("spriteram");
//map(0xffd200, 0xffd201).w(this, FUNC(aerofgt_state::pspikesb_gfxbank_w));
map(0xffd000, 0xffdfff).ram().share("rasterram"); /* bg1 scroll registers */
map(0xffe000, 0xffefff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
map(0xfff000, 0xfff001).portr("IN0");
map(0xfff002, 0xfff003).portr("IN1");
map(0xfff003, 0xfff003).w(this, FUNC(aerofgt_state::pspikes_gfxbank_w));
- map(0xfff004, 0xfff005).portr("DSW").w(this, FUNC(aerofgt_state::aerofgt_bg1scrolly_w));
+ map(0xfff004, 0xfff005).portr("DSW").w(this, FUNC(aerofgt_state::scrolly_w<0>));
map(0xfff006, 0xfff007).noprw();
map(0xfff008, 0xfff009).w(this, FUNC(aerofgt_state::spikes91_lookup_w));
}
@@ -191,9 +210,9 @@ void aerofgt_state::pspikesc_map(address_map &map)
{
map(0x000000, 0x03ffff).rom();
map(0x100000, 0x10ffff).ram(); /* work RAM */
- map(0x200000, 0x203fff).ram().share("spriteram1");
- map(0xff8000, 0xff8fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg1videoram_w)).share("bg1videoram");
- map(0xffc000, 0xffcbff).ram().share("spriteram3");
+ map(0x200000, 0x203fff).ram().share("sprlookupram1");
+ map(0xff8000, 0xff8fff).ram().w(this, FUNC(aerofgt_state::vram_w<0>)).share("vram.0");
+ map(0xffc000, 0xffcbff).ram().share("spriteram");
map(0xffd000, 0xffdfff).ram().share("rasterram"); /* bg1 scroll registers */
map(0xffe000, 0xffefff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
map(0xfff000, 0xfff001).portr("IN0");
@@ -201,7 +220,7 @@ void aerofgt_state::pspikesc_map(address_map &map)
map(0xfff002, 0xfff003).portr("IN1");
map(0xfff003, 0xfff003).w(this, FUNC(aerofgt_state::pspikes_gfxbank_w));
map(0xfff004, 0xfff005).portr("DSW");
- map(0xfff004, 0xfff005).w(this, FUNC(aerofgt_state::aerofgt_bg1scrolly_w));
+ map(0xfff004, 0xfff005).w(this, FUNC(aerofgt_state::scrolly_w<0>));
map(0xfff007, 0xfff007).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
map(0xfff400, 0xfff403).nopw(); // GGA access
}
@@ -210,16 +229,16 @@ void aerofgt_state::kickball_map(address_map &map)
{
map(0x000000, 0x07ffff).rom();
map(0x100000, 0x10ffff).ram(); /* work RAM */
- map(0x200000, 0x20ffff).ram().share("spriteram1");
- map(0xff8000, 0xff8fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg1videoram_w)).share("bg1videoram");
- map(0xffc000, 0xffc3ff).writeonly().share("spriteram3");
+ map(0x200000, 0x20ffff).ram().share("sprlookupram1");
+ map(0xff8000, 0xff8fff).ram().w(this, FUNC(aerofgt_state::vram_w<0>)).share("vram.0");
+ map(0xffc000, 0xffc3ff).writeonly().share("spriteram");
map(0xffd000, 0xffdfff).ram().share("rasterram"); /* bg1 scroll registers */
map(0xffe000, 0xffefff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
map(0xfff000, 0xfff001).portr("IN0");
map(0xfff001, 0xfff001).w(this, FUNC(aerofgt_state::pspikes_palette_bank_w));
map(0xfff002, 0xfff003).portr("IN1");
map(0xfff003, 0xfff003).w(this, FUNC(aerofgt_state::kickball_gfxbank_w));
- map(0xfff004, 0xfff005).portr("DSW").w(this, FUNC(aerofgt_state::aerofgt_bg1scrolly_w));
+ map(0xfff004, 0xfff005).portr("DSW").w(this, FUNC(aerofgt_state::scrolly_w<0>));
map(0xfff007, 0xfff007).r(this, FUNC(aerofgt_state::pending_command_r)).w(m_soundlatch, FUNC(generic_latch_8_device::write)).umask16(0x00ff);
map(0xfff400, 0xfff403).nopw(); // GGA access
}
@@ -228,13 +247,13 @@ void aerofgt_state::karatblz_map(address_map &map)
{
map.global_mask(0xfffff);
map(0x000000, 0x07ffff).rom();
- map(0x080000, 0x081fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg1videoram_w)).share("bg1videoram");
- map(0x082000, 0x083fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg2videoram_w)).share("bg2videoram");
- map(0x0a0000, 0x0affff).ram().share("spriteram1");
- map(0x0b0000, 0x0bffff).ram().share("spriteram2");
+ map(0x080000, 0x081fff).ram().w(this, FUNC(aerofgt_state::vram_w<0>)).share("vram.0");
+ map(0x082000, 0x083fff).ram().w(this, FUNC(aerofgt_state::vram_w<1>)).share("vram.1");
+ map(0x0a0000, 0x0affff).ram().share("sprlookupram1");
+ map(0x0b0000, 0x0bffff).ram().share("sprlookupram2");
map(0x0c0000, 0x0cffff).ram(); /* work RAM */
map(0x0f8000, 0x0fbfff).ram(); /* work RAM */
- map(0x0fc000, 0x0fc7ff).ram().share("spriteram3");
+ map(0x0fc000, 0x0fc7ff).ram().share("spriteram");
map(0x0fe000, 0x0fe7ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
map(0x0ff000, 0x0ff001).portr("IN0");
map(0x0ff000, 0x0ff000).w(this, FUNC(aerofgt_state::spinlbrk_flip_screen_w));
@@ -243,11 +262,11 @@ void aerofgt_state::karatblz_map(address_map &map)
map(0x0ff004, 0x0ff005).portr("IN2");
map(0x0ff006, 0x0ff007).portr("IN3");
map(0x0ff007, 0x0ff007).w(m_soundlatch, FUNC(generic_latch_8_device::write));
- map(0x0ff008, 0x0ff009).portr("DSW").w(this, FUNC(aerofgt_state::aerofgt_bg1scrollx_w));
+ map(0x0ff008, 0x0ff009).portr("DSW").w(this, FUNC(aerofgt_state::scrollx_w<0>));
map(0x0ff00b, 0x0ff00b).r(this, FUNC(aerofgt_state::pending_command_r));
- map(0x0ff00a, 0x0ff00b).w(this, FUNC(aerofgt_state::aerofgt_bg1scrolly_w));
- map(0x0ff00c, 0x0ff00d).w(this, FUNC(aerofgt_state::aerofgt_bg2scrollx_w));
- map(0x0ff00e, 0x0ff00f).w(this, FUNC(aerofgt_state::aerofgt_bg2scrolly_w));
+ map(0x0ff00a, 0x0ff00b).w(this, FUNC(aerofgt_state::scrolly_w<0>));
+ map(0x0ff00c, 0x0ff00d).w(this, FUNC(aerofgt_state::scrollx_w<1>));
+ map(0x0ff00e, 0x0ff00f).w(this, FUNC(aerofgt_state::scrolly_w<1>));
map(0x0ff400, 0x0ff403).w("gga", FUNC(vsystem_gga_device::write)).umask16(0x00ff);
}
@@ -255,13 +274,13 @@ void aerofgt_state::karatblzbl_map(address_map &map)
{
map.global_mask(0xfffff);
map(0x000000, 0x07ffff).rom();
- map(0x080000, 0x081fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg1videoram_w)).share("bg1videoram");
- map(0x082000, 0x083fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg2videoram_w)).share("bg2videoram");
- map(0x0a0000, 0x0affff).ram().share("spriteram1");
- map(0x0b0000, 0x0bffff).ram().share("spriteram2");
+ map(0x080000, 0x081fff).ram().w(this, FUNC(aerofgt_state::vram_w<0>)).share("vram.0");
+ map(0x082000, 0x083fff).ram().w(this, FUNC(aerofgt_state::vram_w<1>)).share("vram.1");
+ map(0x0a0000, 0x0affff).ram().share("sprlookupram1");
+ map(0x0b0000, 0x0bffff).ram().share("sprlookupram2");
map(0x0c0000, 0x0cffff).ram(); /* work RAM */
map(0x0f8000, 0x0fbfff).ram(); /* work RAM */
- map(0x0fc000, 0x0fc7ff).ram().share("spriteram3");
+ map(0x0fc000, 0x0fc7ff).ram().share("spriteram");
map(0x0fe000, 0x0fe7ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
map(0x0ff000, 0x0ff001).portr("IN0");
map(0x0ff000, 0x0ff000).w(this, FUNC(aerofgt_state::spinlbrk_flip_screen_w));
@@ -270,27 +289,27 @@ void aerofgt_state::karatblzbl_map(address_map &map)
map(0x0ff004, 0x0ff005).portr("IN2");
map(0x0ff006, 0x0ff007).portr("IN3");
map(0x0ff007, 0x0ff007).w(this, FUNC(aerofgt_state::karatblzbl_soundlatch_w));
- map(0x0ff008, 0x0ff009).portr("DSW").w(this, FUNC(aerofgt_state::aerofgt_bg1scrollx_w));
+ map(0x0ff008, 0x0ff009).portr("DSW").w(this, FUNC(aerofgt_state::scrollx_w<0>));
map(0x0ff00b, 0x0ff00b).r(this, FUNC(aerofgt_state::pending_command_r));
- map(0x0ff00a, 0x0ff00b).w(this, FUNC(aerofgt_state::aerofgt_bg1scrolly_w));
- map(0x0ff00c, 0x0ff00d).w(this, FUNC(aerofgt_state::aerofgt_bg2scrollx_w));
- map(0x0ff00e, 0x0ff00f).w(this, FUNC(aerofgt_state::aerofgt_bg2scrolly_w));
+ map(0x0ff00a, 0x0ff00b).w(this, FUNC(aerofgt_state::scrolly_w<0>));
+ map(0x0ff00c, 0x0ff00d).w(this, FUNC(aerofgt_state::scrollx_w<1>));
+ map(0x0ff00e, 0x0ff00f).w(this, FUNC(aerofgt_state::scrolly_w<1>));
map(0x0ff400, 0x0ff403).nopw(); // GGA access
}
void aerofgt_state::spinlbrk_map(address_map &map)
{
map(0x000000, 0x03ffff).rom();
- map(0x080000, 0x080fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg1videoram_w)).share("bg1videoram");
- map(0x082000, 0x082fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg2videoram_w)).share("bg2videoram");
+ map(0x080000, 0x080fff).ram().w(this, FUNC(aerofgt_state::vram_w<0>)).share("vram.0");
+ map(0x082000, 0x082fff).ram().w(this, FUNC(aerofgt_state::vram_w<1>)).share("vram.1");
map(0xff8000, 0xffbfff).ram(); /* work RAM */
- map(0xffc000, 0xffc7ff).ram().share("spriteram3");
+ map(0xffc000, 0xffc7ff).ram().share("spriteram");
map(0xffd000, 0xffd1ff).ram().share("rasterram"); /* bg1 scroll registers */
map(0xffe000, 0xffe7ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
map(0xfff000, 0xfff001).portr("IN0");
map(0xfff000, 0xfff000).w(this, FUNC(aerofgt_state::spinlbrk_flip_screen_w));
map(0xfff001, 0xfff001).w(this, FUNC(aerofgt_state::spinlbrk_gfxbank_w));
- map(0xfff002, 0xfff003).portr("IN1").w(this, FUNC(aerofgt_state::aerofgt_bg2scrollx_w));
+ map(0xfff002, 0xfff003).portr("IN1").w(this, FUNC(aerofgt_state::scrollx_w<1>));
map(0xfff004, 0xfff005).portr("DSW");
map(0xfff007, 0xfff007).w(m_soundlatch, FUNC(generic_latch_8_device::write));
// map(0xfff008, 0xfff009); - read when analog inputs are enabled
@@ -303,20 +322,20 @@ void aerofgt_state::turbofrc_map(address_map &map)
map.global_mask(0xfffff);
map(0x000000, 0x0bffff).rom();
map(0x0c0000, 0x0cffff).ram(); /* work RAM */
- map(0x0d0000, 0x0d1fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg1videoram_w)).share("bg1videoram");
- map(0x0d2000, 0x0d3fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg2videoram_w)).share("bg2videoram");
- map(0x0e0000, 0x0e3fff).ram().share("spriteram1");
- map(0x0e4000, 0x0e7fff).ram().share("spriteram2");
+ map(0x0d0000, 0x0d1fff).ram().w(this, FUNC(aerofgt_state::vram_w<0>)).share("vram.0");
+ map(0x0d2000, 0x0d3fff).ram().w(this, FUNC(aerofgt_state::vram_w<1>)).share("vram.1");
+ map(0x0e0000, 0x0e3fff).ram().share("sprlookupram1");
+ map(0x0e4000, 0x0e7fff).ram().share("sprlookupram2");
map(0x0f8000, 0x0fbfff).ram(); /* work RAM */
- map(0x0fc000, 0x0fc7ff).ram().share("spriteram3");
+ map(0x0fc000, 0x0fc7ff).ram().share("spriteram");
map(0x0fd000, 0x0fdfff).ram().share("rasterram"); /* bg1 scroll registers */
map(0x0fe000, 0x0fe7ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
map(0x0ff000, 0x0ff001).portr("IN0");
map(0x0ff001, 0x0ff001).w(this, FUNC(aerofgt_state::turbofrc_flip_screen_w));
- map(0x0ff002, 0x0ff003).portr("IN1").w(this, FUNC(aerofgt_state::aerofgt_bg1scrolly_w));
- map(0x0ff004, 0x0ff005).portr("DSW").w(this, FUNC(aerofgt_state::aerofgt_bg2scrollx_w));
+ map(0x0ff002, 0x0ff003).portr("IN1").w(this, FUNC(aerofgt_state::scrolly_w<0>));
+ map(0x0ff004, 0x0ff005).portr("DSW").w(this, FUNC(aerofgt_state::scrollx_w<1>));
map(0x0ff007, 0x0ff007).r(this, FUNC(aerofgt_state::pending_command_r));
- map(0x0ff006, 0x0ff007).w(this, FUNC(aerofgt_state::aerofgt_bg2scrolly_w));
+ map(0x0ff006, 0x0ff007).w(this, FUNC(aerofgt_state::scrolly_w<1>));
map(0x0ff008, 0x0ff009).portr("IN2");
map(0x0ff008, 0x0ff00b).w(this, FUNC(aerofgt_state::turbofrc_gfxbank_w));
map(0x0ff00c, 0x0ff00d).nopw(); /* related to bg2 (written together with the scroll registers) */
@@ -328,19 +347,19 @@ void aerofgt_state::aerofgtb_map(address_map &map)
{
map(0x000000, 0x07ffff).rom();
map(0x0c0000, 0x0cffff).ram(); /* work RAM */
- map(0x0d0000, 0x0d1fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg1videoram_w)).share("bg1videoram");
- map(0x0d2000, 0x0d3fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg2videoram_w)).share("bg2videoram");
- map(0x0e0000, 0x0e3fff).ram().share("spriteram1");
- map(0x0e4000, 0x0e7fff).ram().share("spriteram2");
+ map(0x0d0000, 0x0d1fff).ram().w(this, FUNC(aerofgt_state::vram_w<0>)).share("vram.0");
+ map(0x0d2000, 0x0d3fff).ram().w(this, FUNC(aerofgt_state::vram_w<1>)).share("vram.1");
+ map(0x0e0000, 0x0e3fff).ram().share("sprlookupram1");
+ map(0x0e4000, 0x0e7fff).ram().share("sprlookupram2");
map(0x0f8000, 0x0fbfff).ram(); /* work RAM */
- map(0x0fc000, 0x0fc7ff).ram().share("spriteram3");
+ map(0x0fc000, 0x0fc7ff).ram().share("spriteram");
map(0x0fd000, 0x0fd7ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
map(0x0fe000, 0x0fe001).portr("IN0");
map(0x0fe001, 0x0fe001).w(this, FUNC(aerofgt_state::turbofrc_flip_screen_w));
- map(0x0fe002, 0x0fe003).portr("IN1").w(this, FUNC(aerofgt_state::aerofgt_bg1scrolly_w));
- map(0x0fe004, 0x0fe005).portr("DSW1").w(this, FUNC(aerofgt_state::aerofgt_bg2scrollx_w));
+ map(0x0fe002, 0x0fe003).portr("IN1").w(this, FUNC(aerofgt_state::scrolly_w<0>));
+ map(0x0fe004, 0x0fe005).portr("DSW1").w(this, FUNC(aerofgt_state::scrollx_w<1>));
map(0x0fe007, 0x0fe007).r(this, FUNC(aerofgt_state::pending_command_r));
- map(0x0fe006, 0x0fe007).w(this, FUNC(aerofgt_state::aerofgt_bg2scrolly_w));
+ map(0x0fe006, 0x0fe007).w(this, FUNC(aerofgt_state::scrolly_w<1>));
map(0x0fe008, 0x0fe009).portr("DSW2");
map(0x0fe008, 0x0fe00b).w(this, FUNC(aerofgt_state::turbofrc_gfxbank_w));
map(0x0fe00e, 0x0fe00e).w(m_soundlatch, FUNC(generic_latch_8_device::write));
@@ -355,14 +374,14 @@ void aerofgt_state::aerofgt_map(address_map &map)
map(0x1b0000, 0x1b07ff).ram().share("rasterram"); /* used only for the scroll registers */
map(0x1b0800, 0x1b0801).ram(); /* tracks watchdog state */
map(0x1b0ff0, 0x1b0fff).ram(); /* stack area during boot */
- map(0x1b2000, 0x1b3fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg1videoram_w)).share("bg1videoram");
- map(0x1b4000, 0x1b5fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg2videoram_w)).share("bg2videoram");
- map(0x1c0000, 0x1c7fff).ram().share("spriteram1");
- map(0x1d0000, 0x1d1fff).ram().share("spriteram3");
+ map(0x1b2000, 0x1b3fff).ram().w(this, FUNC(aerofgt_state::vram_w<0>)).share("vram.0");
+ map(0x1b4000, 0x1b5fff).ram().w(this, FUNC(aerofgt_state::vram_w<1>)).share("vram.1");
+ map(0x1c0000, 0x1c7fff).ram().share("sprlookupram1");
+ map(0x1d0000, 0x1d1fff).ram().share("spriteram");
map(0xfef000, 0xffefff).ram(); /* work RAM */
map(0xffff80, 0xffff87).w(this, FUNC(aerofgt_state::aerofgt_gfxbank_w));
- map(0xffff88, 0xffff89).w(this, FUNC(aerofgt_state::aerofgt_bg1scrolly_w)); /* + something else in the top byte */
- map(0xffff90, 0xffff91).w(this, FUNC(aerofgt_state::aerofgt_bg2scrolly_w)); /* + something else in the top byte */
+ map(0xffff88, 0xffff89).w(this, FUNC(aerofgt_state::scrolly_w<0>)); /* + something else in the top byte */
+ map(0xffff90, 0xffff91).w(this, FUNC(aerofgt_state::scrolly_w<1>)); /* + something else in the top byte */
map(0xffffa0, 0xffffbf).rw("io", FUNC(vs9209_device::read), FUNC(vs9209_device::write)).umask16(0x00ff);
map(0xffffc1, 0xffffc1).w(m_soundlatch, FUNC(generic_latch_8_device::write));
}
@@ -371,20 +390,20 @@ void aerofgt_state::aerfboot_map(address_map &map)
{
map(0x000000, 0x07ffff).rom();
map(0x0c0000, 0x0cffff).ram(); /* work RAM */
- map(0x0d0000, 0x0d1fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg1videoram_w)).share("bg1videoram");
- map(0x0d2000, 0x0d3fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg2videoram_w)).share("bg2videoram");
- map(0x0e0000, 0x0e3fff).ram().share("spriteram1");
- map(0x0e4000, 0x0e7fff).ram().share("spriteram2");
+ map(0x0d0000, 0x0d1fff).ram().w(this, FUNC(aerofgt_state::vram_w<0>)).share("vram.0");
+ map(0x0d2000, 0x0d3fff).ram().w(this, FUNC(aerofgt_state::vram_w<1>)).share("vram.1");
+ map(0x0e0000, 0x0e3fff).ram().share("sprlookupram1");
+ map(0x0e4000, 0x0e7fff).ram().share("sprlookupram2");
map(0x0f8000, 0x0fbfff).ram(); /* work RAM */
- map(0x0fc000, 0x0fc7ff).ram(); //.share("spriteram3");
+ map(0x0fc000, 0x0fc7ff).ram(); //.share("spriteram");
map(0x0fd000, 0x0fd7ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
map(0x0fe000, 0x0fe001).portr("IN0");
map(0x0fe002, 0x0fe003).portr("IN1");
map(0x0fe004, 0x0fe005).portr("DSW1");
map(0x0fe008, 0x0fe009).portr("DSW2");
- map(0x0fe002, 0x0fe003).w(this, FUNC(aerofgt_state::aerofgt_bg1scrolly_w));
- map(0x0fe004, 0x0fe005).w(this, FUNC(aerofgt_state::aerofgt_bg2scrollx_w));
- map(0x0fe006, 0x0fe007).w(this, FUNC(aerofgt_state::aerofgt_bg2scrolly_w));
+ map(0x0fe002, 0x0fe003).w(this, FUNC(aerofgt_state::scrolly_w<0>));
+ map(0x0fe004, 0x0fe005).w(this, FUNC(aerofgt_state::scrollx_w<1>));
+ map(0x0fe006, 0x0fe007).w(this, FUNC(aerofgt_state::scrolly_w<1>));
map(0x0fe008, 0x0fe00b).w(this, FUNC(aerofgt_state::turbofrc_gfxbank_w));
map(0x0fe00e, 0x0fe00e).w(m_soundlatch, FUNC(generic_latch_8_device::write));
map(0x0fe010, 0x0fe011).nopw();
@@ -392,7 +411,7 @@ void aerofgt_state::aerfboot_map(address_map &map)
map(0x0fe400, 0x0fe403).nopw(); // GGA access
map(0x0ff000, 0x0fffff).ram().share("rasterram"); /* used only for the scroll registers */
map(0x100000, 0x107fff).nopw();
- map(0x108000, 0x10bfff).ram().share("spriteram3");
+ map(0x108000, 0x10bfff).ram().share("spriteram");
map(0x10c000, 0x117fff).nopw();
}
@@ -400,20 +419,20 @@ void aerofgt_state::aerfboo2_map(address_map &map)
{
map(0x000000, 0x07ffff).rom();
map(0x0c0000, 0x0cffff).ram(); /* work RAM */
- map(0x0d0000, 0x0d1fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg1videoram_w)).share("bg1videoram");
- map(0x0d2000, 0x0d3fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg2videoram_w)).share("bg2videoram");
- map(0x0e0000, 0x0e3fff).ram().share("spriteram1");
- map(0x0e4000, 0x0e7fff).ram().share("spriteram2");
+ map(0x0d0000, 0x0d1fff).ram().w(this, FUNC(aerofgt_state::vram_w<0>)).share("vram.0");
+ map(0x0d2000, 0x0d3fff).ram().w(this, FUNC(aerofgt_state::vram_w<1>)).share("vram.1");
+ map(0x0e0000, 0x0e3fff).ram().share("sprlookupram1");
+ map(0x0e4000, 0x0e7fff).ram().share("sprlookupram2");
map(0x0f8000, 0x0fbfff).ram(); /* work RAM */
- map(0x0fc000, 0x0fc7ff).ram().share("spriteram3");
+ map(0x0fc000, 0x0fc7ff).ram().share("spriteram");
map(0x0fd000, 0x0fd7ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
map(0x0fe000, 0x0fe001).portr("IN0");
map(0x0fe002, 0x0fe003).portr("IN1");
map(0x0fe004, 0x0fe005).portr("DSW1");
map(0x0fe008, 0x0fe009).portr("DSW2");
- map(0x0fe002, 0x0fe003).w(this, FUNC(aerofgt_state::aerofgt_bg1scrolly_w));
- map(0x0fe004, 0x0fe005).w(this, FUNC(aerofgt_state::aerofgt_bg2scrollx_w));
- map(0x0fe006, 0x0fe007).w(this, FUNC(aerofgt_state::aerofgt_bg2scrolly_w));
+ map(0x0fe002, 0x0fe003).w(this, FUNC(aerofgt_state::scrolly_w<0>));
+ map(0x0fe004, 0x0fe005).w(this, FUNC(aerofgt_state::scrollx_w<1>));
+ map(0x0fe006, 0x0fe007).w(this, FUNC(aerofgt_state::scrolly_w<1>));
map(0x0fe008, 0x0fe00b).w(this, FUNC(aerofgt_state::turbofrc_gfxbank_w));
map(0x0fe006, 0x0fe006).r(m_oki, FUNC(okim6295_device::read));
map(0x0fe00e, 0x0fe00e).w(m_oki, FUNC(okim6295_device::write));
@@ -428,17 +447,17 @@ void aerofgt_state::wbbc97_map(address_map &map)
{
map(0x000000, 0x3fffff).rom();
map(0x500000, 0x50ffff).ram(); /* work RAM */
- map(0x600000, 0x605fff).ram().share("spriteram1");
+ map(0x600000, 0x605fff).ram().share("sprlookupram1");
map(0xa00000, 0xa3ffff).ram().share("bitmapram");
- map(0xff8000, 0xff8fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg1videoram_w)).share("bg1videoram");
- map(0xffc000, 0xffc3ff).writeonly().share("spriteram3");
+ map(0xff8000, 0xff8fff).ram().w(this, FUNC(aerofgt_state::vram_w<0>)).share("vram.0");
+ map(0xffc000, 0xffc3ff).writeonly().share("spriteram");
map(0xffd000, 0xffdfff).ram().share("rasterram"); /* bg1 scroll registers */
map(0xffe000, 0xffefff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
map(0xfff000, 0xfff001).portr("IN0");
map(0xfff001, 0xfff001).w(this, FUNC(aerofgt_state::pspikes_palette_bank_w));
map(0xfff002, 0xfff003).portr("IN1");
map(0xfff003, 0xfff003).w(this, FUNC(aerofgt_state::pspikes_gfxbank_w));
- map(0xfff004, 0xfff005).portr("DSW").w(this, FUNC(aerofgt_state::aerofgt_bg1scrolly_w));
+ map(0xfff004, 0xfff005).portr("DSW").w(this, FUNC(aerofgt_state::scrolly_w<0>));
map(0xfff007, 0xfff007).r(this, FUNC(aerofgt_state::pending_command_r)).w(m_soundlatch, FUNC(generic_latch_8_device::write)).umask16(0x00ff);
map(0xfff00e, 0xfff00f).w(this, FUNC(aerofgt_state::wbbc97_bitmap_enable_w));
map(0xfff400, 0xfff403).nopw(); // GGA access
@@ -1265,19 +1284,6 @@ static const gfx_layout pspikesb_spritelayout =
32*8
};
-static const gfx_layout aerofgtb_spritelayout =
-{
- 16,16,
- RGN_FRAC(1,2),
- 4,
- { 0, 1, 2, 3 },
- { 3*4, 2*4, 1*4, 0*4, RGN_FRAC(1,2)+3*4, RGN_FRAC(1,2)+2*4, RGN_FRAC(1,2)+1*4, RGN_FRAC(1,2)+0*4,
- 7*4, 6*4, 5*4, 4*4, RGN_FRAC(1,2)+7*4, RGN_FRAC(1,2)+6*4, RGN_FRAC(1,2)+5*4, RGN_FRAC(1,2)+4*4 },
- { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32,
- 8*32, 9*32, 10*32, 11*32, 12*32, 13*32, 14*32, 15*32 },
- 64*8
-};
-
static const gfx_layout aerofgt_spritelayout =
{
16,16,
@@ -1385,13 +1391,6 @@ static GFXDECODE_START( turbofrc )
GFXDECODE_ENTRY( "gfx4", 0, pspikes_spritelayout, 768, 16 )
GFXDECODE_END
-static GFXDECODE_START( aerofgtb )
- GFXDECODE_ENTRY( "gfx1", 0, pspikes_charlayout, 0, 16 )
- GFXDECODE_ENTRY( "gfx2", 0, pspikes_charlayout, 256, 16 )
- GFXDECODE_ENTRY( "spritegfx", 0, aerofgtb_spritelayout, 512, 16 )
- GFXDECODE_ENTRY( "gfx4", 0, aerofgtb_spritelayout, 768, 16 )
-GFXDECODE_END
-
static GFXDECODE_START( aerofgt )
GFXDECODE_ENTRY( "gfx1", 0, aerofgt_charlayout, 0, 16 )
GFXDECODE_ENTRY( "gfx1", 0, aerofgt_charlayout, 256, 16 )
@@ -1475,7 +1474,7 @@ MACHINE_CONFIG_START(aerofgt_state::pspikes)
MCFG_PALETTE_ADD("palette", 2048)
MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
- MCFG_DEVICE_ADD("vsystem_spr_old", VSYSTEM_SPR2, 0)
+ MCFG_DEVICE_ADD("vsystem_spr_old1", VSYSTEM_SPR2, 0)
MCFG_VSYSTEM_SPR2_SET_TILE_INDIRECT( aerofgt_state, aerofgt_old_tile_callback )
MCFG_VSYSTEM_SPR2_SET_GFXREGION(1)
MCFG_VSYSTEM_SPR2_GFXDECODE("gfxdecode")
@@ -1605,7 +1604,7 @@ MACHINE_CONFIG_START(aerofgt_state::kickball)
MCFG_PALETTE_ADD("palette", 2048)
MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
- MCFG_DEVICE_ADD("vsystem_spr_old", VSYSTEM_SPR2, 0)
+ MCFG_DEVICE_ADD("vsystem_spr_old1", VSYSTEM_SPR2, 0)
MCFG_VSYSTEM_SPR2_SET_TILE_INDIRECT( aerofgt_state, aerofgt_old_tile_callback )
MCFG_VSYSTEM_SPR2_SET_GFXREGION(1)
MCFG_VSYSTEM_SPR2_GFXDECODE("gfxdecode")
@@ -1654,7 +1653,7 @@ MACHINE_CONFIG_START(aerofgt_state::pspikesc)
//MCFG_DEVICE_ADD("gga", VSYSTEM_GGA, 0)
- MCFG_DEVICE_ADD("vsystem_spr_old", VSYSTEM_SPR2, 0)
+ MCFG_DEVICE_ADD("vsystem_spr_old1", VSYSTEM_SPR2, 0)
MCFG_VSYSTEM_SPR2_SET_TILE_INDIRECT( aerofgt_state, aerofgt_old_tile_callback )
MCFG_VSYSTEM_SPR2_SET_GFXREGION(1)
MCFG_VSYSTEM_SPR2_GFXDECODE("gfxdecode")
@@ -1698,12 +1697,12 @@ MACHINE_CONFIG_START(aerofgt_state::karatblz)
MCFG_DEVICE_ADD("gga", VSYSTEM_GGA, XTAL(14'318'181) / 2) // divider not verified
- MCFG_DEVICE_ADD("vsystem_spr_old", VSYSTEM_SPR2, 0)
+ MCFG_DEVICE_ADD("vsystem_spr_old1", VSYSTEM_SPR2, 0)
MCFG_VSYSTEM_SPR2_SET_TILE_INDIRECT( aerofgt_state, aerofgt_old_tile_callback )
MCFG_VSYSTEM_SPR2_SET_GFXREGION(2)
MCFG_VSYSTEM_SPR2_GFXDECODE("gfxdecode")
- MCFG_DEVICE_ADD("vsystem_spr_ol2", VSYSTEM_SPR2, 0)
+ MCFG_DEVICE_ADD("vsystem_spr_old2", VSYSTEM_SPR2, 0)
MCFG_VSYSTEM_SPR2_SET_TILE_INDIRECT( aerofgt_state, aerofgt_ol2_tile_callback )
MCFG_VSYSTEM_SPR2_SET_GFXREGION(3)
MCFG_VSYSTEM_SPR2_GFXDECODE("gfxdecode")
@@ -1752,12 +1751,12 @@ MACHINE_CONFIG_START(aerofgt_state::karatblzbl)
MCFG_PALETTE_ADD("palette", 1024)
MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
- MCFG_DEVICE_ADD("vsystem_spr_old", VSYSTEM_SPR2, 0)
+ MCFG_DEVICE_ADD("vsystem_spr_old1", VSYSTEM_SPR2, 0)
MCFG_VSYSTEM_SPR2_SET_TILE_INDIRECT( aerofgt_state, aerofgt_old_tile_callback )
MCFG_VSYSTEM_SPR2_SET_GFXREGION(2)
MCFG_VSYSTEM_SPR2_GFXDECODE("gfxdecode")
- MCFG_DEVICE_ADD("vsystem_spr_ol2", VSYSTEM_SPR2, 0)
+ MCFG_DEVICE_ADD("vsystem_spr_old2", VSYSTEM_SPR2, 0)
MCFG_VSYSTEM_SPR2_SET_TILE_INDIRECT( aerofgt_state, aerofgt_ol2_tile_callback )
MCFG_VSYSTEM_SPR2_SET_GFXREGION(3)
MCFG_VSYSTEM_SPR2_GFXDECODE("gfxdecode")
@@ -1811,13 +1810,13 @@ MACHINE_CONFIG_START(aerofgt_state::spinlbrk)
MCFG_DEVICE_ADD("gga", VSYSTEM_GGA, XTAL(14'318'181) / 2) // divider not verified
- MCFG_DEVICE_ADD("vsystem_spr_old", VSYSTEM_SPR2, 0)
+ MCFG_DEVICE_ADD("vsystem_spr_old1", VSYSTEM_SPR2, 0)
MCFG_VSYSTEM_SPR2_SET_PRITYPE(1)
MCFG_VSYSTEM_SPR2_SET_GFXREGION(2)
MCFG_VSYSTEM_SPR2_GFXDECODE("gfxdecode")
- MCFG_DEVICE_ADD("vsystem_spr_ol2", VSYSTEM_SPR2, 0)
- MCFG_VSYSTEM_SPR2_SET_TILE_INDIRECT( aerofgt_state, aerofgt_ol2_tile_callback ) // rom lookup
+ MCFG_DEVICE_ADD("vsystem_spr_old2", VSYSTEM_SPR2, 0)
+ MCFG_VSYSTEM_SPR2_SET_TILE_INDIRECT( aerofgt_state, spinbrk_tile_callback ) // rom lookup
MCFG_VSYSTEM_SPR2_SET_PRITYPE(1)
MCFG_VSYSTEM_SPR2_SET_GFXREGION(3)
MCFG_VSYSTEM_SPR2_GFXDECODE("gfxdecode")
@@ -1869,12 +1868,12 @@ MACHINE_CONFIG_START(aerofgt_state::turbofrc)
MCFG_DEVICE_ADD("gga", VSYSTEM_GGA, XTAL(14'318'181) / 2) // divider not verified
- MCFG_DEVICE_ADD("vsystem_spr_old", VSYSTEM_SPR2, 0)
+ MCFG_DEVICE_ADD("vsystem_spr_old1", VSYSTEM_SPR2, 0)
MCFG_VSYSTEM_SPR2_SET_TILE_INDIRECT( aerofgt_state, aerofgt_old_tile_callback )
MCFG_VSYSTEM_SPR2_SET_GFXREGION(2)
MCFG_VSYSTEM_SPR2_GFXDECODE("gfxdecode")
- MCFG_DEVICE_ADD("vsystem_spr_ol2", VSYSTEM_SPR2, 0)
+ MCFG_DEVICE_ADD("vsystem_spr_old2", VSYSTEM_SPR2, 0)
MCFG_VSYSTEM_SPR2_SET_TILE_INDIRECT( aerofgt_state, aerofgt_ol2_tile_callback )
MCFG_VSYSTEM_SPR2_SET_GFXREGION(3)
MCFG_VSYSTEM_SPR2_GFXDECODE("gfxdecode")
@@ -1921,18 +1920,18 @@ MACHINE_CONFIG_START(aerofgt_state::aerofgtb)
MCFG_SCREEN_UPDATE_DRIVER(aerofgt_state, screen_update_turbofrc)
MCFG_SCREEN_PALETTE("palette")
- MCFG_GFXDECODE_ADD("gfxdecode", "palette", aerofgtb)
+ MCFG_GFXDECODE_ADD("gfxdecode", "palette", turbofrc)
MCFG_PALETTE_ADD("palette", 1024)
MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
MCFG_DEVICE_ADD("gga", VSYSTEM_GGA, XTAL(14'318'181) / 2) // divider not verified
- MCFG_DEVICE_ADD("vsystem_spr_old", VSYSTEM_SPR2, 0)
+ MCFG_DEVICE_ADD("vsystem_spr_old1", VSYSTEM_SPR2, 0)
MCFG_VSYSTEM_SPR2_SET_TILE_INDIRECT( aerofgt_state, aerofgt_old_tile_callback )
MCFG_VSYSTEM_SPR2_SET_GFXREGION(2)
MCFG_VSYSTEM_SPR2_GFXDECODE("gfxdecode")
- MCFG_DEVICE_ADD("vsystem_spr_ol2", VSYSTEM_SPR2, 0)
+ MCFG_DEVICE_ADD("vsystem_spr_old2", VSYSTEM_SPR2, 0)
MCFG_VSYSTEM_SPR2_SET_TILE_INDIRECT( aerofgt_state, aerofgt_ol2_tile_callback )
MCFG_VSYSTEM_SPR2_SET_GFXREGION(3)
MCFG_VSYSTEM_SPR2_GFXDECODE("gfxdecode")
@@ -2122,7 +2121,7 @@ MACHINE_CONFIG_START(aerofgt_state::wbbc97)
//MCFG_DEVICE_ADD("gga", VSYSTEM_GGA, 0)
- MCFG_DEVICE_ADD("vsystem_spr_old", VSYSTEM_SPR2, 0)
+ MCFG_DEVICE_ADD("vsystem_spr_old1", VSYSTEM_SPR2, 0)
MCFG_VSYSTEM_SPR2_SET_TILE_INDIRECT( aerofgt_state, aerofgt_old_tile_callback )
MCFG_VSYSTEM_SPR2_SET_GFXREGION(1)
MCFG_VSYSTEM_SPR2_GFXDECODE("gfxdecode")
@@ -2377,9 +2376,9 @@ ROM_START( spikes91 )
ROM_LOAD( "13.ic120", 0x80000, 0x40000, CRC(89213a8c) SHA1(8524d5c14669d9b03f1fe050c4318d4111bc8ef7) )
ROM_LOAD( "14.ic121", 0xc0000, 0x40000, CRC(468cbf5b) SHA1(60fbc2771e40f8de51a51891b8ddcc14e2b1e52c) )
- ROM_REGION( 0x020000, "user1", 0 ) /* lookup tables for the sprites */
- ROM_LOAD( "10.ic104", 0x00000, 0x10000, CRC(769ade77) SHA1(9cb581d02592c69f37d4b5a902d3515f40915ec4) )
- ROM_LOAD( "9.ic103", 0x10000, 0x10000, CRC(201cb748) SHA1(f78d384e4e9c5996a278f76fb4d5f28812a27de5) )
+ ROM_REGION16_BE( 0x020000, "sprlookuprom", 0 ) /* lookup tables for the sprites */
+ ROM_LOAD16_BYTE( "10.ic104", 0x00000, 0x10000, CRC(769ade77) SHA1(9cb581d02592c69f37d4b5a902d3515f40915ec4) )
+ ROM_LOAD16_BYTE( "9.ic103", 0x00001, 0x10000, CRC(201cb748) SHA1(f78d384e4e9c5996a278f76fb4d5f28812a27de5) )
ROM_REGION( 0x20000, "cpu1", 0 ) /* Z80 Sound CPU + M5205 Samples */
ROM_LOAD( "1.ic140", 0x00000, 0x10000, CRC(e3065b1d) SHA1(c4a3a95ba7f43cdf1b0c574f41de06d007ad2bd8) )
@@ -2406,9 +2405,9 @@ ROM_START( spikes91b ) // todo, check how this differs, only 1 of the 68k pair a
ROM_LOAD( "13.ic120", 0x80000, 0x40000, CRC(89213a8c) SHA1(8524d5c14669d9b03f1fe050c4318d4111bc8ef7) )
ROM_LOAD( "14.ic121", 0xc0000, 0x40000, CRC(468cbf5b) SHA1(60fbc2771e40f8de51a51891b8ddcc14e2b1e52c) )
- ROM_REGION( 0x020000, "user1", 0 ) /* lookup tables for the sprites */
- ROM_LOAD( "10.ic104", 0x00000, 0x8000, CRC(b6fe4e57) SHA1(6b62936ff9d0f39fd02c3db488d53bc035c2272d) ) // sldh
- ROM_LOAD( "9.ic103", 0x10000, 0x8000, CRC(5479ed35) SHA1(ca26289318352901841fcdf26d9b43e797ac39b6) ) // sldh
+ ROM_REGION16_BE( 0x020000, "sprlookuprom", 0 ) /* lookup tables for the sprites */
+ ROM_LOAD16_BYTE( "10.ic104", 0x00000, 0x8000, CRC(b6fe4e57) SHA1(6b62936ff9d0f39fd02c3db488d53bc035c2272d) ) // sldh
+ ROM_LOAD16_BYTE( "9.ic103", 0x00001, 0x8000, CRC(5479ed35) SHA1(ca26289318352901841fcdf26d9b43e797ac39b6) ) // sldh
ROM_REGION( 0x20000, "cpu1", 0 ) /* Z80 Sound CPU + M5205 Samples */
ROM_LOAD( "1.ic140", 0x00000, 0x10000, CRC(e3065b1d) SHA1(c4a3a95ba7f43cdf1b0c574f41de06d007ad2bd8) )
@@ -2479,7 +2478,7 @@ ROM_START( spinlbrk )
ROM_LOAD( "ic35", 0x100000, 0x80000, CRC(eba8e1a3) SHA1(976ef30437df9aba6fa6d5cd11728476f34eb05b) )
ROM_LOAD( "ic40", 0x180000, 0x80000, CRC(5ef5aa7e) SHA1(8d4b0f2348c536c6781c8ba25722301673aca289) )
- ROM_REGION16_BE( 0x24000, "gfx5", 0 ) /* hardcoded sprite maps */
+ ROM_REGION16_BE( 0x24000, "sprlookuprom", 0 ) /* hardcoded sprite maps */
ROM_LOAD16_BYTE( "ic19", 0x00000, 0x10000, CRC(db24eeaa) SHA1(300dd1ce81dd258b265bc3a64b8542ed152ed2cf) )
ROM_LOAD16_BYTE( "ic13", 0x00001, 0x10000, CRC(97025bf4) SHA1(0519f0c94f3d417bf8ff0124a3a137035a4013dc) )
/* 20000-23fff empty space, filled in vh_startup */
@@ -2529,7 +2528,7 @@ ROM_START( spinlbrku )
ROM_LOAD( "ic35", 0x100000, 0x80000, CRC(eba8e1a3) SHA1(976ef30437df9aba6fa6d5cd11728476f34eb05b) )
ROM_LOAD( "ic40", 0x180000, 0x80000, CRC(5ef5aa7e) SHA1(8d4b0f2348c536c6781c8ba25722301673aca289) )
- ROM_REGION16_BE( 0x24000, "gfx5", 0 ) /* hardcoded sprite maps */
+ ROM_REGION16_BE( 0x24000, "sprlookuprom", 0 ) /* hardcoded sprite maps */
ROM_LOAD16_BYTE( "ic19", 0x00000, 0x10000, CRC(db24eeaa) SHA1(300dd1ce81dd258b265bc3a64b8542ed152ed2cf) )
ROM_LOAD16_BYTE( "ic13", 0x00001, 0x10000, CRC(97025bf4) SHA1(0519f0c94f3d417bf8ff0124a3a137035a4013dc) )
/* 20000-23fff empty space, filled in vh_startup */
@@ -2579,7 +2578,7 @@ ROM_START( spinlbrkj )
ROM_LOAD( "ic35", 0x100000, 0x80000, CRC(eba8e1a3) SHA1(976ef30437df9aba6fa6d5cd11728476f34eb05b) )
ROM_LOAD( "ic40", 0x180000, 0x80000, CRC(5ef5aa7e) SHA1(8d4b0f2348c536c6781c8ba25722301673aca289) )
- ROM_REGION16_BE( 0x24000, "gfx5", 0 ) /* hardcoded sprite maps */
+ ROM_REGION16_BE( 0x24000, "sprlookuprom", 0 ) /* hardcoded sprite maps */
ROM_LOAD16_BYTE( "ic19", 0x00000, 0x10000, CRC(db24eeaa) SHA1(300dd1ce81dd258b265bc3a64b8542ed152ed2cf) )
ROM_LOAD16_BYTE( "ic13", 0x00001, 0x10000, CRC(97025bf4) SHA1(0519f0c94f3d417bf8ff0124a3a137035a4013dc) )
/* 20000-23fff empty space, filled in vh_startup */
@@ -2920,12 +2919,12 @@ ROM_START( aerofgtb )
ROM_LOAD( "it-19-02", 0x000000, 0x80000, CRC(4f57f8ba) SHA1(aaad548e9a7490dfd48a975135716225f416b6f6) )
ROM_REGION( 0x100000, "spritegfx", 0 )
- ROM_LOAD( "it-19-04", 0x000000, 0x80000, CRC(3b329c1f) SHA1(279cb32d69ce1e71f42cfad93d395794a3e92bc6) )
- ROM_LOAD( "it-19-05", 0x080000, 0x80000, CRC(02b525af) SHA1(07f23d15938dfbdc4f0977ba1463a06090569026) )
+ ROM_LOAD16_WORD_SWAP( "it-19-04", 0x000000, 0x80000, CRC(3b329c1f) SHA1(279cb32d69ce1e71f42cfad93d395794a3e92bc6) )
+ ROM_LOAD16_WORD_SWAP( "it-19-05", 0x080000, 0x80000, CRC(02b525af) SHA1(07f23d15938dfbdc4f0977ba1463a06090569026) )
ROM_REGION( 0x080000, "gfx4", 0 )
- ROM_LOAD( "g27", 0x000000, 0x40000, CRC(4d89cbc8) SHA1(93f248f3dc1a15c32d14a147b37d5d660d0e4337) )
- ROM_LOAD( "g26", 0x040000, 0x40000, CRC(8072c1d2) SHA1(c14634f5f2686cf616f415d9ea4a0c6490054beb) )
+ ROM_LOAD16_WORD_SWAP( "g27", 0x000000, 0x40000, CRC(4d89cbc8) SHA1(93f248f3dc1a15c32d14a147b37d5d660d0e4337) )
+ ROM_LOAD16_WORD_SWAP( "g26", 0x040000, 0x40000, CRC(8072c1d2) SHA1(c14634f5f2686cf616f415d9ea4a0c6490054beb) )
ROM_REGION( 0x40000, "ymsnd.deltat", 0 ) /* sound samples */
ROM_LOAD( "it-19-01", 0x00000, 0x40000, CRC(6d42723d) SHA1(57c59234e9925430a4c687733682efed06d7eed1) )
@@ -2950,12 +2949,12 @@ ROM_START( aerofgtc )
ROM_LOAD( "it-19-02", 0x000000, 0x80000, CRC(4f57f8ba) SHA1(aaad548e9a7490dfd48a975135716225f416b6f6) )
ROM_REGION( 0x100000, "spritegfx", 0 )
- ROM_LOAD( "it-19-04", 0x000000, 0x80000, CRC(3b329c1f) SHA1(279cb32d69ce1e71f42cfad93d395794a3e92bc6) )
- ROM_LOAD( "it-19-05", 0x080000, 0x80000, CRC(02b525af) SHA1(07f23d15938dfbdc4f0977ba1463a06090569026) )
+ ROM_LOAD16_WORD_SWAP( "it-19-04", 0x000000, 0x80000, CRC(3b329c1f) SHA1(279cb32d69ce1e71f42cfad93d395794a3e92bc6) )
+ ROM_LOAD16_WORD_SWAP( "it-19-05", 0x080000, 0x80000, CRC(02b525af) SHA1(07f23d15938dfbdc4f0977ba1463a06090569026) )
ROM_REGION( 0x080000, "gfx4", 0 )
- ROM_LOAD( "g27", 0x000000, 0x40000, CRC(4d89cbc8) SHA1(93f248f3dc1a15c32d14a147b37d5d660d0e4337) )
- ROM_LOAD( "g26", 0x040000, 0x40000, CRC(8072c1d2) SHA1(c14634f5f2686cf616f415d9ea4a0c6490054beb) )
+ ROM_LOAD16_WORD_SWAP( "g27", 0x000000, 0x40000, CRC(4d89cbc8) SHA1(93f248f3dc1a15c32d14a147b37d5d660d0e4337) )
+ ROM_LOAD16_WORD_SWAP( "g26", 0x040000, 0x40000, CRC(8072c1d2) SHA1(c14634f5f2686cf616f415d9ea4a0c6490054beb) )
ROM_REGION( 0x40000, "ymsnd.deltat", 0 ) /* sound samples */
ROM_LOAD( "it-19-01", 0x00000, 0x40000, CRC(6d42723d) SHA1(57c59234e9925430a4c687733682efed06d7eed1) )
@@ -2980,12 +2979,12 @@ ROM_START( sonicwi )
ROM_LOAD( "it-19-02", 0x000000, 0x80000, CRC(4f57f8ba) SHA1(aaad548e9a7490dfd48a975135716225f416b6f6) )
ROM_REGION( 0x100000, "spritegfx", 0 )
- ROM_LOAD( "it-19-04", 0x000000, 0x80000, CRC(3b329c1f) SHA1(279cb32d69ce1e71f42cfad93d395794a3e92bc6) )
- ROM_LOAD( "it-19-05", 0x080000, 0x80000, CRC(02b525af) SHA1(07f23d15938dfbdc4f0977ba1463a06090569026) )
+ ROM_LOAD16_WORD_SWAP( "it-19-04", 0x000000, 0x80000, CRC(3b329c1f) SHA1(279cb32d69ce1e71f42cfad93d395794a3e92bc6) )
+ ROM_LOAD16_WORD_SWAP( "it-19-05", 0x080000, 0x80000, CRC(02b525af) SHA1(07f23d15938dfbdc4f0977ba1463a06090569026) )
ROM_REGION( 0x080000, "gfx4", 0 )
- ROM_LOAD( "g27", 0x000000, 0x40000, CRC(4d89cbc8) SHA1(93f248f3dc1a15c32d14a147b37d5d660d0e4337) )
- ROM_LOAD( "g26", 0x040000, 0x40000, CRC(8072c1d2) SHA1(c14634f5f2686cf616f415d9ea4a0c6490054beb) )
+ ROM_LOAD16_WORD_SWAP( "g27", 0x000000, 0x40000, CRC(4d89cbc8) SHA1(93f248f3dc1a15c32d14a147b37d5d660d0e4337) )
+ ROM_LOAD16_WORD_SWAP( "g26", 0x040000, 0x40000, CRC(8072c1d2) SHA1(c14634f5f2686cf616f415d9ea4a0c6490054beb) )
ROM_REGION( 0x40000, "ymsnd.deltat", 0 ) /* sound samples */
ROM_LOAD( "it-19-01", 0x00000, 0x40000, CRC(6d42723d) SHA1(57c59234e9925430a4c687733682efed06d7eed1) )
diff --git a/src/mame/includes/aerofgt.h b/src/mame/includes/aerofgt.h
index f3aefa80d21..b46d4d358b4 100644
--- a/src/mame/includes/aerofgt.h
+++ b/src/mame/includes/aerofgt.h
@@ -11,36 +11,33 @@ class aerofgt_state : public driver_device
{
public:
aerofgt_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag),
- m_bg1videoram(*this, "bg1videoram"),
- m_bg2videoram(*this, "bg2videoram"),
- m_rasterram(*this, "rasterram"),
- m_bitmapram(*this, "bitmapram"),
- m_spriteram1(*this, "spriteram1"),
- m_spriteram2(*this, "spriteram2"),
- m_spriteram3(*this, "spriteram3"),
- m_tx_tilemap_ram(*this, "tx_tilemap_ram"),
- m_maincpu(*this, "maincpu"),
- m_audiocpu(*this, "audiocpu"),
- m_oki(*this, "oki"),
- m_upd7759(*this, "upd"),
- m_gfxdecode(*this, "gfxdecode"),
- m_palette(*this, "palette"),
- m_spr(*this, "vsystem_spr"),
- m_spr_old(*this, "vsystem_spr_old"),
- m_spr_old2(*this, "vsystem_spr_ol2"),
- m_soundlatch(*this, "soundlatch"),
- m_soundbank(*this, "soundbank"),
- m_okibank(*this, "okibank") { }
+ : driver_device(mconfig, type, tag)
+ , m_vram(*this, "vram.%u", 0)
+ , m_rasterram(*this, "rasterram")
+ , m_bitmapram(*this, "bitmapram")
+ , m_sprlookupram(*this, "sprlookupram%u", 1)
+ , m_spriteram(*this, "spriteram")
+ , m_tx_tilemap_ram(*this, "tx_tilemap_ram")
+ , m_maincpu(*this, "maincpu")
+ , m_audiocpu(*this, "audiocpu")
+ , m_oki(*this, "oki")
+ , m_upd7759(*this, "upd")
+ , m_gfxdecode(*this, "gfxdecode")
+ , m_palette(*this, "palette")
+ , m_spr(*this, "vsystem_spr")
+ , m_spr_old(*this, "vsystem_spr_old%u", 1)
+ , m_soundlatch(*this, "soundlatch")
+ , m_sprlookuprom(*this, "sprlookuprom")
+ , m_soundbank(*this, "soundbank")
+ , m_okibank(*this, "okibank")
+ { }
/* memory pointers */
- required_shared_ptr<uint16_t> m_bg1videoram;
- optional_shared_ptr<uint16_t> m_bg2videoram;
+ optional_shared_ptr_array<uint16_t, 2> m_vram;
optional_shared_ptr<uint16_t> m_rasterram;
optional_shared_ptr<uint16_t> m_bitmapram;
- optional_shared_ptr<uint16_t> m_spriteram1;
- optional_shared_ptr<uint16_t> m_spriteram2;
- required_shared_ptr<uint16_t> m_spriteram3;
+ optional_shared_ptr_array<uint16_t, 2> m_sprlookupram;
+ required_shared_ptr<uint16_t> m_spriteram;
optional_shared_ptr<uint16_t> m_tx_tilemap_ram;
/* devices referenced above */
@@ -51,22 +48,19 @@ public:
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
optional_device<vsystem_spr_device> m_spr; // only the aerofgt parent uses this chip
- optional_device<vsystem_spr2_device> m_spr_old; // every other (non-bootleg) uses this
- optional_device<vsystem_spr2_device> m_spr_old2; // or a pair of them..
+ optional_device_array<vsystem_spr2_device, 2> m_spr_old; // every other (non-bootleg) uses this or a pair of them..
optional_device<generic_latch_8_device> m_soundlatch;
+ optional_region_ptr<uint16_t> m_sprlookuprom;
optional_memory_bank m_soundbank;
optional_memory_bank m_okibank;
/* video-related */
- tilemap_t *m_bg1_tilemap;
- tilemap_t *m_bg2_tilemap;
+ tilemap_t *m_tilemap[2];
uint8_t m_gfxbank[8];
uint16_t m_bank[4];
- uint16_t m_bg1scrollx;
- uint16_t m_bg1scrolly;
- uint16_t m_bg2scrollx;
- uint16_t m_bg2scrolly;
+ uint16_t m_scrollx[2];
+ uint16_t m_scrolly[2];
bool m_flip_screen;
uint16_t m_wbbc97_bitmap_enable;
int m_charpalettebank;
@@ -77,6 +71,7 @@ public:
uint32_t aerofgt_old_tile_callback( uint32_t code );
uint32_t aerofgt_ol2_tile_callback( uint32_t code );
+ uint32_t spinbrk_tile_callback( uint32_t code );
/* handlers */
DECLARE_WRITE8_MEMBER(karatblzbl_soundlatch_w);
@@ -84,8 +79,7 @@ public:
DECLARE_WRITE8_MEMBER(aerofgt_sh_bankswitch_w);
DECLARE_WRITE8_MEMBER(spinlbrk_sh_bankswitch_w);
DECLARE_WRITE8_MEMBER(aerfboot_okim6295_banking_w);
- DECLARE_WRITE16_MEMBER(aerofgt_bg1videoram_w);
- DECLARE_WRITE16_MEMBER(aerofgt_bg2videoram_w);
+ template<int Layer> DECLARE_WRITE16_MEMBER(vram_w);
DECLARE_WRITE8_MEMBER(pspikes_gfxbank_w);
DECLARE_WRITE16_MEMBER(pspikesb_gfxbank_w);
DECLARE_WRITE16_MEMBER(spikes91_lookup_w);
@@ -94,10 +88,8 @@ public:
DECLARE_WRITE8_MEMBER(kickball_gfxbank_w);
DECLARE_WRITE16_MEMBER(turbofrc_gfxbank_w);
DECLARE_WRITE16_MEMBER(aerofgt_gfxbank_w);
- DECLARE_WRITE16_MEMBER(aerofgt_bg1scrollx_w);
- DECLARE_WRITE16_MEMBER(aerofgt_bg1scrolly_w);
- DECLARE_WRITE16_MEMBER(aerofgt_bg2scrollx_w);
- DECLARE_WRITE16_MEMBER(aerofgt_bg2scrolly_w);
+ template<int Layer> DECLARE_WRITE16_MEMBER(scrollx_w);
+ template<int Layer> DECLARE_WRITE16_MEMBER(scrolly_w);
DECLARE_WRITE8_MEMBER(pspikes_palette_bank_w);
DECLARE_WRITE8_MEMBER(spinlbrk_flip_screen_w);
DECLARE_WRITE8_MEMBER(turbofrc_flip_screen_w);
@@ -107,11 +99,9 @@ public:
DECLARE_WRITE8_MEMBER(karatblzbl_d7759_write_port_0_w);
DECLARE_WRITE8_MEMBER(karatblzbl_d7759_reset_w);
TILE_GET_INFO_MEMBER(get_pspikes_tile_info);
- TILE_GET_INFO_MEMBER(karatblz_bg1_tile_info);
- TILE_GET_INFO_MEMBER(karatblz_bg2_tile_info);
- TILE_GET_INFO_MEMBER(spinlbrk_bg1_tile_info);
- TILE_GET_INFO_MEMBER(get_bg1_tile_info);
- TILE_GET_INFO_MEMBER(get_bg2_tile_info);
+ template<int Layer> TILE_GET_INFO_MEMBER(karatblz_tile_info);
+ template<int Layer> TILE_GET_INFO_MEMBER(spinlbrk_tile_info);
+ template<int Layer> TILE_GET_INFO_MEMBER(get_tile_info);
DECLARE_MACHINE_START(aerofgt);
DECLARE_MACHINE_START(spinlbrk);
DECLARE_MACHINE_RESET(aerofgt);
@@ -135,7 +125,7 @@ public:
uint32_t screen_update_aerfboo2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
uint32_t screen_update_wbbc97(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
void aerofgt_register_state_globals( );
- void setbank( tilemap_t *tmap, int num, int bank );
+ void setbank( int layer, int num, int bank );
void aerfboo2_draw_sprites( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int chip, int chip_disabled_pri );
void pspikesb_draw_sprites( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect );
void spikes91_draw_sprites( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect );
diff --git a/src/mame/video/aerofgt.cpp b/src/mame/video/aerofgt.cpp
index 58da861db98..2fc3ccfc1dd 100644
--- a/src/mame/video/aerofgt.cpp
+++ b/src/mame/video/aerofgt.cpp
@@ -12,7 +12,7 @@
TILE_GET_INFO_MEMBER(aerofgt_state::get_pspikes_tile_info)
{
- uint16_t code = m_bg1videoram[tile_index];
+ uint16_t code = m_vram[0][tile_index];
int bank = (code & 0x1000) >> 12;
SET_TILE_INFO_MEMBER(0,
(code & 0x0fff) + (m_gfxbank[bank] << 12),
@@ -20,49 +20,33 @@ TILE_GET_INFO_MEMBER(aerofgt_state::get_pspikes_tile_info)
0);
}
-TILE_GET_INFO_MEMBER(aerofgt_state::karatblz_bg1_tile_info)
-{
- uint16_t code = m_bg1videoram[tile_index];
- SET_TILE_INFO_MEMBER(0,
- (code & 0x1fff) + (m_gfxbank[0] << 13),
- (code & 0xe000) >> 13,
- 0);
-}
-
/* also spinlbrk */
-TILE_GET_INFO_MEMBER(aerofgt_state::karatblz_bg2_tile_info)
+template<int Layer>
+TILE_GET_INFO_MEMBER(aerofgt_state::karatblz_tile_info)
{
- uint16_t code = m_bg2videoram[tile_index];
- SET_TILE_INFO_MEMBER(1,
- (code & 0x1fff) + (m_gfxbank[1] << 13),
+ uint16_t code = m_vram[Layer][tile_index];
+ SET_TILE_INFO_MEMBER(Layer,
+ (code & 0x1fff) + (m_gfxbank[Layer] << 13),
(code & 0xe000) >> 13,
0);
}
-TILE_GET_INFO_MEMBER(aerofgt_state::spinlbrk_bg1_tile_info)
+template<int Layer>
+TILE_GET_INFO_MEMBER(aerofgt_state::spinlbrk_tile_info)
{
- uint16_t code = m_bg1videoram[tile_index];
- SET_TILE_INFO_MEMBER(0,
- (code & 0x0fff) + (m_gfxbank[0] << 12),
+ uint16_t code = m_vram[Layer][tile_index];
+ SET_TILE_INFO_MEMBER(Layer,
+ (code & 0x0fff) + (m_gfxbank[Layer] << 12),
(code & 0xf000) >> 12,
0);
}
-TILE_GET_INFO_MEMBER(aerofgt_state::get_bg1_tile_info)
-{
- uint16_t code = m_bg1videoram[tile_index];
- int bank = (code & 0x1800) >> 11;
- SET_TILE_INFO_MEMBER(0,
- (code & 0x07ff) + (m_gfxbank[bank] << 11),
- (code & 0xe000) >> 13,
- 0);
-}
-
-TILE_GET_INFO_MEMBER(aerofgt_state::get_bg2_tile_info)
+template<int Layer>
+TILE_GET_INFO_MEMBER(aerofgt_state::get_tile_info)
{
- uint16_t code = m_bg2videoram[tile_index];
- int bank = 4 + ((code & 0x1800) >> 11);
- SET_TILE_INFO_MEMBER(1,
+ uint16_t code = m_vram[Layer][tile_index];
+ int bank = (Layer << 2) + (code & 0x1800) >> 11;
+ SET_TILE_INFO_MEMBER(Layer,
(code & 0x07ff) + (m_gfxbank[bank] << 11),
(code & 0xe000) >> 13,
0);
@@ -76,15 +60,12 @@ TILE_GET_INFO_MEMBER(aerofgt_state::get_bg2_tile_info)
***************************************************************************/
-
void aerofgt_state::aerofgt_register_state_globals( )
{
save_item(NAME(m_gfxbank));
save_item(NAME(m_bank));
- save_item(NAME(m_bg1scrollx));
- save_item(NAME(m_bg1scrolly));
- save_item(NAME(m_bg2scrollx));
- save_item(NAME(m_bg2scrolly));
+ save_item(NAME(m_scrollx));
+ save_item(NAME(m_scrolly));
save_item(NAME(m_flip_screen));
save_item(NAME(m_charpalettebank));
save_item(NAME(m_spritepalettebank));
@@ -92,7 +73,7 @@ void aerofgt_state::aerofgt_register_state_globals( )
VIDEO_START_MEMBER(aerofgt_state,pspikes)
{
- m_bg1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(aerofgt_state::get_pspikes_tile_info),this),TILEMAP_SCAN_ROWS,8,8,64,32);
+ m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(aerofgt_state::get_pspikes_tile_info),this),TILEMAP_SCAN_ROWS,8,8,64,32);
/* no bg2 in this game */
m_sprite_gfx = 1;
@@ -101,13 +82,12 @@ VIDEO_START_MEMBER(aerofgt_state,pspikes)
save_item(NAME(m_spikes91_lookup));
}
-
VIDEO_START_MEMBER(aerofgt_state,karatblz)
{
- m_bg1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(aerofgt_state::karatblz_bg1_tile_info),this),TILEMAP_SCAN_ROWS, 8,8,64,64);
- m_bg2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(aerofgt_state::karatblz_bg2_tile_info),this),TILEMAP_SCAN_ROWS,8,8,64,64);
+ m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(aerofgt_state::karatblz_tile_info<0>),this),TILEMAP_SCAN_ROWS,8,8,64,64);
+ m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(aerofgt_state::karatblz_tile_info<1>),this),TILEMAP_SCAN_ROWS,8,8,64,64);
- m_bg2_tilemap->set_transparent_pen(15);
+ m_tilemap[1]->set_transparent_pen(15);
m_spritepalettebank = 0;
m_sprite_gfx = 2;
@@ -116,28 +96,25 @@ VIDEO_START_MEMBER(aerofgt_state,karatblz)
VIDEO_START_MEMBER(aerofgt_state,spinlbrk)
{
- m_bg1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(aerofgt_state::spinlbrk_bg1_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64);
- m_bg2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(aerofgt_state::karatblz_bg2_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64);
+ m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(aerofgt_state::spinlbrk_tile_info<0>),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64);
+ m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(aerofgt_state::karatblz_tile_info<1>),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64);
- m_bg2_tilemap->set_transparent_pen(15);
+ m_tilemap[1]->set_transparent_pen(15);
m_spritepalettebank = 0;
m_sprite_gfx = 2;
/* sprite maps are hardcoded in this game */
- /* enemy sprites use ROM instead of RAM */
- m_spriteram2.set_target(reinterpret_cast<uint16_t *>(memregion("gfx5")->base()), 0x20000);
-
aerofgt_register_state_globals();
}
VIDEO_START_MEMBER(aerofgt_state,turbofrc)
{
- m_bg1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(aerofgt_state::get_bg1_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64);
- m_bg2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(aerofgt_state::get_bg2_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64);
+ m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(aerofgt_state::get_tile_info<0>),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64);
+ m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(aerofgt_state::get_tile_info<1>),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64);
- m_bg2_tilemap->set_transparent_pen(15);
+ m_tilemap[1]->set_transparent_pen(15);
m_spritepalettebank = 0;
m_sprite_gfx = 2;
@@ -149,23 +126,26 @@ VIDEO_START_MEMBER(aerofgt_state,turbofrc)
/* new hw type */
uint32_t aerofgt_state::aerofgt_tile_callback( uint32_t code )
{
- return m_spriteram1[code&0x7fff];
+ return m_sprlookupram[0][code&0x7fff];
}
-
-
/* old hw type */
uint32_t aerofgt_state::aerofgt_old_tile_callback( uint32_t code )
{
- return m_spriteram1[code % (m_spriteram1.bytes()/2)];
+ return m_sprlookupram[0][code % (m_sprlookupram[0].bytes()/2)];
}
uint32_t aerofgt_state::aerofgt_ol2_tile_callback( uint32_t code )
{
- return m_spriteram2[code % (m_spriteram2.bytes()/2)];
+ return m_sprlookupram[1][code % (m_sprlookupram[1].bytes()/2)];
}
+uint32_t aerofgt_state::spinbrk_tile_callback( uint32_t code )
+{
+ /* enemy sprites use ROM instead of RAM */
+ return m_sprlookuprom[code % m_sprlookuprom.length()];
+}
/***************************************************************************
@@ -174,93 +154,56 @@ uint32_t aerofgt_state::aerofgt_ol2_tile_callback( uint32_t code )
***************************************************************************/
-WRITE16_MEMBER(aerofgt_state::aerofgt_bg1videoram_w)
-{
- COMBINE_DATA(&m_bg1videoram[offset]);
- m_bg1_tilemap->mark_tile_dirty(offset);
-}
-
-WRITE16_MEMBER(aerofgt_state::aerofgt_bg2videoram_w)
-{
- COMBINE_DATA(&m_bg2videoram[offset]);
- m_bg2_tilemap->mark_tile_dirty(offset);
-}
-
-
-void aerofgt_state::setbank( tilemap_t *tmap, int num, int bank )
+void aerofgt_state::setbank( int layer, int num, int bank )
{
if (m_gfxbank[num] != bank)
{
m_gfxbank[num] = bank;
- tmap->mark_all_dirty();
+ m_tilemap[layer]->mark_all_dirty();
}
}
WRITE8_MEMBER(aerofgt_state::pspikes_gfxbank_w)
{
- setbank(m_bg1_tilemap, 0, (data & 0xf0) >> 4);
- setbank(m_bg1_tilemap, 1, data & 0x0f);
+ setbank(0, 0, (data & 0xf0) >> 4);
+ setbank(0, 1, data & 0x0f);
}
WRITE8_MEMBER(aerofgt_state::karatblz_gfxbank_w)
{
- setbank(m_bg1_tilemap, 0, (data & 0x01));
- setbank(m_bg2_tilemap, 1, (data & 0x08) >> 3);
+ setbank(0, 0, (data & 0x01));
+ setbank(1, 1, (data & 0x08) >> 3);
}
WRITE8_MEMBER(aerofgt_state::spinlbrk_gfxbank_w)
{
- setbank(m_bg1_tilemap, 0, (data & 0x07));
- setbank(m_bg2_tilemap, 1, (data & 0x38) >> 3);
+ setbank(0, 0, (data & 0x07));
+ setbank(1, 1, (data & 0x38) >> 3);
}
WRITE16_MEMBER(aerofgt_state::turbofrc_gfxbank_w)
{
- tilemap_t *tmap = (offset == 0) ? m_bg1_tilemap : m_bg2_tilemap;
-
data = COMBINE_DATA(&m_bank[offset]);
- setbank(tmap, 4 * offset + 0, (data >> 0) & 0x0f);
- setbank(tmap, 4 * offset + 1, (data >> 4) & 0x0f);
- setbank(tmap, 4 * offset + 2, (data >> 8) & 0x0f);
- setbank(tmap, 4 * offset + 3, (data >> 12) & 0x0f);
+ setbank(offset, 4 * offset + 0, (data >> 0) & 0x0f);
+ setbank(offset, 4 * offset + 1, (data >> 4) & 0x0f);
+ setbank(offset, 4 * offset + 2, (data >> 8) & 0x0f);
+ setbank(offset, 4 * offset + 3, (data >> 12) & 0x0f);
}
WRITE16_MEMBER(aerofgt_state::aerofgt_gfxbank_w)
{
- tilemap_t *tmap = (offset < 2) ? m_bg1_tilemap : m_bg2_tilemap;
-
data = COMBINE_DATA(&m_bank[offset]);
- setbank(tmap, 2 * offset + 0, (data >> 8) & 0xff);
- setbank(tmap, 2 * offset + 1, (data >> 0) & 0xff);
+ setbank(offset >> 1, 2 * offset + 0, (data >> 8) & 0xff);
+ setbank(offset >> 1, 2 * offset + 1, (data >> 0) & 0xff);
}
WRITE8_MEMBER(aerofgt_state::kickball_gfxbank_w)
{
// I strongly doubt this logic is correct
- setbank(m_bg1_tilemap, 0, (data & 0x0f)&~0x01);
- setbank(m_bg1_tilemap, 1, (data & 0x0f));
-}
-
-WRITE16_MEMBER(aerofgt_state::aerofgt_bg1scrollx_w)
-{
- COMBINE_DATA(&m_bg1scrollx);
-}
-
-WRITE16_MEMBER(aerofgt_state::aerofgt_bg1scrolly_w)
-{
- COMBINE_DATA(&m_bg1scrolly);
-}
-
-WRITE16_MEMBER(aerofgt_state::aerofgt_bg2scrollx_w)
-{
- COMBINE_DATA(&m_bg2scrollx);
-}
-
-WRITE16_MEMBER(aerofgt_state::aerofgt_bg2scrolly_w)
-{
- COMBINE_DATA(&m_bg2scrolly);
+ setbank(0, 0, (data & 0x0f)&~0x01);
+ setbank(0, 1, (data & 0x0f));
}
WRITE8_MEMBER(aerofgt_state::pspikes_palette_bank_w)
@@ -269,25 +212,25 @@ WRITE8_MEMBER(aerofgt_state::pspikes_palette_bank_w)
if (m_charpalettebank != (data & 0x1c) >> 2)
{
m_charpalettebank = (data & 0x1c) >> 2;
- m_bg1_tilemap->mark_all_dirty();
+ m_tilemap[0]->mark_all_dirty();
}
m_flip_screen = BIT(data, 7);
- m_bg1_tilemap->set_flip(m_flip_screen ? TILEMAP_FLIPX | TILEMAP_FLIPY : 0);
+ m_tilemap[0]->set_flip(m_flip_screen ? TILEMAP_FLIPX | TILEMAP_FLIPY : 0);
}
WRITE8_MEMBER(aerofgt_state::spinlbrk_flip_screen_w)
{
m_flip_screen = BIT(data, 7);
- m_bg1_tilemap->set_flip(m_flip_screen ? TILEMAP_FLIPX | TILEMAP_FLIPY : 0);
- m_bg2_tilemap->set_flip(m_flip_screen ? TILEMAP_FLIPX | TILEMAP_FLIPY : 0);
+ m_tilemap[0]->set_flip(m_flip_screen ? TILEMAP_FLIPX | TILEMAP_FLIPY : 0);
+ m_tilemap[1]->set_flip(m_flip_screen ? TILEMAP_FLIPX | TILEMAP_FLIPY : 0);
}
WRITE8_MEMBER(aerofgt_state::turbofrc_flip_screen_w)
{
m_flip_screen = BIT(data, 7);
- m_bg1_tilemap->set_flip(m_flip_screen ? TILEMAP_FLIPX | TILEMAP_FLIPY : 0);
- m_bg2_tilemap->set_flip(m_flip_screen ? TILEMAP_FLIPX | TILEMAP_FLIPY : 0);
+ m_tilemap[0]->set_flip(m_flip_screen ? TILEMAP_FLIPX | TILEMAP_FLIPY : 0);
+ m_tilemap[1]->set_flip(m_flip_screen ? TILEMAP_FLIPX | TILEMAP_FLIPY : 0);
// bit 6 = ?
}
@@ -304,39 +247,39 @@ uint32_t aerofgt_state::screen_update_pspikes(screen_device &screen, bitmap_ind1
{
int i, scrolly;
- m_bg1_tilemap->set_scroll_rows(256);
- scrolly = m_bg1scrolly;
+ m_tilemap[0]->set_scroll_rows(256);
+ scrolly = m_scrolly[0];
for (i = 0; i < 256; i++)
- m_bg1_tilemap->set_scrollx((i + scrolly) & 0xff, m_rasterram[i]);
- m_bg1_tilemap->set_scrolly(0, scrolly);
+ m_tilemap[0]->set_scrollx((i + scrolly) & 0xff, m_rasterram[i]);
+ m_tilemap[0]->set_scrolly(0, scrolly);
screen.priority().fill(0, cliprect);
- m_bg1_tilemap->draw(screen, bitmap, cliprect, 0, 0);
- m_spr_old->turbofrc_draw_sprites(m_spriteram3,m_spriteram3.bytes(),m_spritepalettebank, bitmap, cliprect, screen.priority(), 1, m_flip_screen);
- m_spr_old->turbofrc_draw_sprites(m_spriteram3,m_spriteram3.bytes(),m_spritepalettebank, bitmap, cliprect, screen.priority(), 0, m_flip_screen);
+ m_tilemap[0]->draw(screen, bitmap, cliprect, 0, 0);
+ m_spr_old[0]->turbofrc_draw_sprites(m_spriteram,m_spriteram.bytes(),m_spritepalettebank, bitmap, cliprect, screen.priority(), 1, m_flip_screen);
+ m_spr_old[0]->turbofrc_draw_sprites(m_spriteram,m_spriteram.bytes(),m_spritepalettebank, bitmap, cliprect, screen.priority(), 0, m_flip_screen);
return 0;
}
uint32_t aerofgt_state::screen_update_karatblz(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- m_bg1_tilemap->set_scrollx(0, m_bg1scrollx - 8);
- m_bg1_tilemap->set_scrolly(0, m_bg1scrolly);
- m_bg2_tilemap->set_scrollx(0, m_bg2scrollx - 4);
- m_bg2_tilemap->set_scrolly(0, m_bg2scrolly);
+ m_tilemap[0]->set_scrollx(0, m_scrollx[0] - 8);
+ m_tilemap[0]->set_scrolly(0, m_scrolly[0]);
+ m_tilemap[1]->set_scrollx(0, m_scrollx[1] - 4);
+ m_tilemap[1]->set_scrolly(0, m_scrolly[1]);
screen.priority().fill(0, cliprect);
- m_bg1_tilemap->draw(screen, bitmap, cliprect, 0, 0);
- m_bg2_tilemap->draw(screen, bitmap, cliprect, 0, 0);
+ m_tilemap[0]->draw(screen, bitmap, cliprect, 0, 0);
+ m_tilemap[1]->draw(screen, bitmap, cliprect, 0, 0);
/* we use the priority buffer so sprites are drawn front to back */
- m_spr_old2->turbofrc_draw_sprites(m_spriteram3+0x200,m_spriteram3.bytes()/2,m_spritepalettebank, bitmap, cliprect, screen.priority(), 1, m_flip_screen);
- m_spr_old2->turbofrc_draw_sprites(m_spriteram3+0x200,m_spriteram3.bytes()/2,m_spritepalettebank, bitmap, cliprect, screen.priority(), 0, m_flip_screen);
+ m_spr_old[1]->turbofrc_draw_sprites(m_spriteram+0x200,m_spriteram.bytes()/2,m_spritepalettebank, bitmap, cliprect, screen.priority(), 1, m_flip_screen);
+ m_spr_old[1]->turbofrc_draw_sprites(m_spriteram+0x200,m_spriteram.bytes()/2,m_spritepalettebank, bitmap, cliprect, screen.priority(), 0, m_flip_screen);
- m_spr_old->turbofrc_draw_sprites(m_spriteram3+0x000,m_spriteram3.bytes()/2,m_spritepalettebank, bitmap, cliprect, screen.priority(), 1, m_flip_screen);
- m_spr_old->turbofrc_draw_sprites(m_spriteram3+0x000,m_spriteram3.bytes()/2,m_spritepalettebank, bitmap, cliprect, screen.priority(), 0, m_flip_screen);
+ m_spr_old[0]->turbofrc_draw_sprites(m_spriteram+0x000,m_spriteram.bytes()/2,m_spritepalettebank, bitmap, cliprect, screen.priority(), 1, m_flip_screen);
+ m_spr_old[0]->turbofrc_draw_sprites(m_spriteram+0x000,m_spriteram.bytes()/2,m_spritepalettebank, bitmap, cliprect, screen.priority(), 0, m_flip_screen);
return 0;
}
@@ -344,25 +287,25 @@ uint32_t aerofgt_state::screen_update_spinlbrk(screen_device &screen, bitmap_ind
{
int i, scrolly;
- m_bg1_tilemap->set_scroll_rows(512);
+ m_tilemap[0]->set_scroll_rows(512);
scrolly = 0;
for (i = 0; i < 256; i++)
- m_bg1_tilemap->set_scrollx((i + scrolly) & 0x1ff, m_rasterram[i] - 8);
-// m_bg1_tilemap->set_scrolly(0, m_bg1scrolly);
- m_bg2_tilemap->set_scrollx(0, m_bg2scrollx - 4);
-// m_bg2_tilemap->set_scrolly(0, m_bg2scrolly);
+ m_tilemap[0]->set_scrollx((i + scrolly) & 0x1ff, m_rasterram[i] - 8);
+// m_tilemap[0]->set_scrolly(0, m_scrolly[0]);
+ m_tilemap[1]->set_scrollx(0, m_scrollx[1] - 4);
+// m_tilemap[1]->set_scrolly(0, m_scrolly[1]);
screen.priority().fill(0, cliprect);
- m_bg1_tilemap->draw(screen, bitmap, cliprect, 0, 0);
- m_bg2_tilemap->draw(screen, bitmap, cliprect, 0, 1);
+ m_tilemap[0]->draw(screen, bitmap, cliprect, 0, 0);
+ m_tilemap[1]->draw(screen, bitmap, cliprect, 0, 1);
/* we use the priority buffer so sprites are drawn front to back */
- m_spr_old->turbofrc_draw_sprites(m_spriteram3+0x000,m_spriteram3.bytes()/2,m_spritepalettebank, bitmap, cliprect, screen.priority(), 0, m_flip_screen);
- m_spr_old->turbofrc_draw_sprites(m_spriteram3+0x000,m_spriteram3.bytes()/2,m_spritepalettebank, bitmap, cliprect, screen.priority(), 1, m_flip_screen);
+ m_spr_old[0]->turbofrc_draw_sprites(m_spriteram+0x000,m_spriteram.bytes()/2,m_spritepalettebank, bitmap, cliprect, screen.priority(), 0, m_flip_screen);
+ m_spr_old[0]->turbofrc_draw_sprites(m_spriteram+0x000,m_spriteram.bytes()/2,m_spritepalettebank, bitmap, cliprect, screen.priority(), 1, m_flip_screen);
- m_spr_old2->turbofrc_draw_sprites(m_spriteram3+0x200,m_spriteram3.bytes()/2,m_spritepalettebank, bitmap, cliprect, screen.priority(), 0, m_flip_screen);
- m_spr_old2->turbofrc_draw_sprites(m_spriteram3+0x200,m_spriteram3.bytes()/2,m_spritepalettebank, bitmap, cliprect, screen.priority(), 1, m_flip_screen);
+ m_spr_old[1]->turbofrc_draw_sprites(m_spriteram+0x200,m_spriteram.bytes()/2,m_spritepalettebank, bitmap, cliprect, screen.priority(), 0, m_flip_screen);
+ m_spr_old[1]->turbofrc_draw_sprites(m_spriteram+0x200,m_spriteram.bytes()/2,m_spritepalettebank, bitmap, cliprect, screen.priority(), 1, m_flip_screen);
return 0;
}
@@ -370,47 +313,47 @@ uint32_t aerofgt_state::screen_update_turbofrc(screen_device &screen, bitmap_ind
{
int i, scrolly;
- m_bg1_tilemap->set_scroll_rows(512);
- scrolly = m_bg1scrolly + 2;
+ m_tilemap[0]->set_scroll_rows(512);
+ scrolly = m_scrolly[0] + 2;
for (i = 0; i < 256; i++)
-// m_bg1_tilemap->set_scrollx((i + scrolly) & 0x1ff, m_rasterram[i] - 11);
- m_bg1_tilemap->set_scrollx((i + scrolly) & 0x1ff, m_rasterram[7] - 11 - (m_flip_screen ? 188 : 0));
- m_bg1_tilemap->set_scrolly(0, scrolly - (m_flip_screen ? 2 : 0));
- m_bg2_tilemap->set_scrollx(0, m_bg2scrollx - (m_flip_screen ? 185 : 7));
- m_bg2_tilemap->set_scrolly(0, m_bg2scrolly + (m_flip_screen ? 0 : 2));
+// m_tilemap[0]->set_scrollx((i + scrolly) & 0x1ff, m_rasterram[i] - 11);
+ m_tilemap[0]->set_scrollx((i + scrolly) & 0x1ff, m_rasterram[7] - 11 - (m_flip_screen ? 188 : 0));
+ m_tilemap[0]->set_scrolly(0, scrolly - (m_flip_screen ? 2 : 0));
+ m_tilemap[1]->set_scrollx(0, m_scrollx[1] - (m_flip_screen ? 185 : 7));
+ m_tilemap[1]->set_scrolly(0, m_scrolly[1] + (m_flip_screen ? 0 : 2));
screen.priority().fill(0, cliprect);
- m_bg1_tilemap->draw(screen, bitmap, cliprect, 0, 0);
- m_bg2_tilemap->draw(screen, bitmap, cliprect, 0, 1);
+ m_tilemap[0]->draw(screen, bitmap, cliprect, 0, 0);
+ m_tilemap[1]->draw(screen, bitmap, cliprect, 0, 1);
/* we use the priority buffer so sprites are drawn front to back */
- m_spr_old2->turbofrc_draw_sprites(m_spriteram3+0x200,m_spriteram3.bytes()/2,m_spritepalettebank, bitmap, cliprect, screen.priority(), 1, m_flip_screen); //ship
- m_spr_old2->turbofrc_draw_sprites(m_spriteram3+0x200,m_spriteram3.bytes()/2,m_spritepalettebank, bitmap, cliprect, screen.priority(), 0, m_flip_screen); //intro
+ m_spr_old[1]->turbofrc_draw_sprites(m_spriteram+0x200,m_spriteram.bytes()/2,m_spritepalettebank, bitmap, cliprect, screen.priority(), 1, m_flip_screen); //ship
+ m_spr_old[1]->turbofrc_draw_sprites(m_spriteram+0x200,m_spriteram.bytes()/2,m_spritepalettebank, bitmap, cliprect, screen.priority(), 0, m_flip_screen); //intro
- m_spr_old->turbofrc_draw_sprites(m_spriteram3+0x000,m_spriteram3.bytes()/2,m_spritepalettebank, bitmap, cliprect, screen.priority(), 1, m_flip_screen); //enemy
- m_spr_old->turbofrc_draw_sprites(m_spriteram3+0x000,m_spriteram3.bytes()/2,m_spritepalettebank, bitmap, cliprect, screen.priority(), 0, m_flip_screen); //enemy
+ m_spr_old[0]->turbofrc_draw_sprites(m_spriteram+0x000,m_spriteram.bytes()/2,m_spritepalettebank, bitmap, cliprect, screen.priority(), 1, m_flip_screen); //enemy
+ m_spr_old[0]->turbofrc_draw_sprites(m_spriteram+0x000,m_spriteram.bytes()/2,m_spritepalettebank, bitmap, cliprect, screen.priority(), 0, m_flip_screen); //enemy
return 0;
}
uint32_t aerofgt_state::screen_update_aerofgt(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- m_bg1_tilemap->set_scrollx(0, m_rasterram[0x0000] - 18);
- m_bg1_tilemap->set_scrolly(0, m_bg1scrolly);
- m_bg2_tilemap->set_scrollx(0, m_rasterram[0x0200] - 20);
- m_bg2_tilemap->set_scrolly(0, m_bg2scrolly);
+ m_tilemap[0]->set_scrollx(0, m_rasterram[0x0000] - 18);
+ m_tilemap[0]->set_scrolly(0, m_scrolly[0]);
+ m_tilemap[1]->set_scrollx(0, m_rasterram[0x0200] - 20);
+ m_tilemap[1]->set_scrolly(0, m_scrolly[1]);
screen.priority().fill(0, cliprect);
- m_bg1_tilemap->draw(screen, bitmap, cliprect, 0, 0);
+ m_tilemap[0]->draw(screen, bitmap, cliprect, 0, 0);
- m_spr->draw_sprites(m_spriteram3, m_spriteram3.bytes(), screen, bitmap, cliprect, 0x03, 0x00);
- m_spr->draw_sprites(m_spriteram3, m_spriteram3.bytes(), screen, bitmap, cliprect, 0x03, 0x01);
+ m_spr->draw_sprites(m_spriteram, m_spriteram.bytes(), screen, bitmap, cliprect, 0x03, 0x00);
+ m_spr->draw_sprites(m_spriteram, m_spriteram.bytes(), screen, bitmap, cliprect, 0x03, 0x01);
- m_bg2_tilemap->draw(screen, bitmap, cliprect, 0, 0);
+ m_tilemap[1]->draw(screen, bitmap, cliprect, 0, 0);
- m_spr->draw_sprites(m_spriteram3, m_spriteram3.bytes(), screen, bitmap, cliprect, 0x03, 0x02);
- m_spr->draw_sprites(m_spriteram3, m_spriteram3.bytes(), screen, bitmap, cliprect, 0x03, 0x03);
+ m_spr->draw_sprites(m_spriteram, m_spriteram.bytes(), screen, bitmap, cliprect, 0x03, 0x02);
+ m_spr->draw_sprites(m_spriteram, m_spriteram.bytes(), screen, bitmap, cliprect, 0x03, 0x03);
return 0;
}
@@ -424,10 +367,10 @@ uint32_t aerofgt_state::screen_update_aerofgt(screen_device &screen, bitmap_ind1
// BOOTLEG
VIDEO_START_MEMBER(aerofgt_state,wbbc97)
{
- m_bg1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(aerofgt_state::get_pspikes_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32);
+ m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(aerofgt_state::get_pspikes_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32);
/* no bg2 in this game */
- m_bg1_tilemap->set_transparent_pen(15);
+ m_tilemap[0]->set_transparent_pen(15);
m_sprite_gfx = 1;
@@ -441,8 +384,8 @@ WRITE16_MEMBER(aerofgt_state::pspikesb_gfxbank_w)
{
COMBINE_DATA(&m_rasterram[0x200 / 2]);
- setbank(m_bg1_tilemap, 0, (data & 0xf000) >> 12);
- setbank(m_bg1_tilemap, 1, (data & 0x0f00) >> 8);
+ setbank(0, 0, (data & 0xf000) >> 12);
+ setbank(0, 1, (data & 0x0f00) >> 8);
}
// BOOTLEG
@@ -463,7 +406,7 @@ void aerofgt_state::aerfboo2_draw_sprites( screen_device &screen, bitmap_ind16 &
int attr_start, base, first;
base = chip * 0x0200;
-// first = 4 * m_spriteram3[0x1fe + base];
+// first = 4 * m_spriteram[0x1fe + base];
first = 0;
for (attr_start = base + 0x0200 - 4; attr_start >= first + base; attr_start -= 4)
@@ -473,26 +416,26 @@ void aerofgt_state::aerfboo2_draw_sprites( screen_device &screen, bitmap_ind16 &
// some other drivers still use this wrong table, they have to be upgraded
// int zoomtable[16] = { 0,7,14,20,25,30,34,38,42,46,49,52,54,57,59,61 };
- if (!(m_spriteram3[attr_start + 2] & 0x0080))
+ if (!(m_spriteram[attr_start + 2] & 0x0080))
continue;
- pri = m_spriteram3[attr_start + 2] & 0x0010;
+ pri = m_spriteram[attr_start + 2] & 0x0010;
if ( chip_disabled_pri && !pri)
continue;
if ((!chip_disabled_pri) && (pri >> 4))
continue;
- ox = m_spriteram3[attr_start + 1] & 0x01ff;
- xsize = (m_spriteram3[attr_start + 2] & 0x0700) >> 8;
- zoomx = (m_spriteram3[attr_start + 1] & 0xf000) >> 12;
- oy = m_spriteram3[attr_start + 0] & 0x01ff;
- ysize = (m_spriteram3[attr_start + 2] & 0x7000) >> 12;
- zoomy = (m_spriteram3[attr_start + 0] & 0xf000) >> 12;
- flipx = m_spriteram3[attr_start + 2] & 0x0800;
- flipy = m_spriteram3[attr_start + 2] & 0x8000;
- color = (m_spriteram3[attr_start + 2] & 0x000f) + 16 * m_spritepalettebank;
-
- map_start = m_spriteram3[attr_start + 3];
+ ox = m_spriteram[attr_start + 1] & 0x01ff;
+ xsize = (m_spriteram[attr_start + 2] & 0x0700) >> 8;
+ zoomx = (m_spriteram[attr_start + 1] & 0xf000) >> 12;
+ oy = m_spriteram[attr_start + 0] & 0x01ff;
+ ysize = (m_spriteram[attr_start + 2] & 0x7000) >> 12;
+ zoomy = (m_spriteram[attr_start + 0] & 0xf000) >> 12;
+ flipx = m_spriteram[attr_start + 2] & 0x0800;
+ flipy = m_spriteram[attr_start + 2] & 0x8000;
+ color = (m_spriteram[attr_start + 2] & 0x000f) + 16 * m_spritepalettebank;
+
+ map_start = m_spriteram[attr_start + 3];
// aerofgt has this adjustment, but doing it here would break turbo force title screen
// ox += (xsize*zoomx+2)/4;
@@ -519,10 +462,7 @@ void aerofgt_state::aerfboo2_draw_sprites( screen_device &screen, bitmap_ind16 &
else
sx = ((ox + zoomx * x / 2 + 16) & 0x1ff) - 16;
- if (chip == 0)
- code = m_spriteram1[map_start % (m_spriteram1.bytes()/2)];
- else
- code = m_spriteram2[map_start % (m_spriteram2.bytes()/2)];
+ code = m_sprlookupram[chip][map_start % (m_sprlookupram[chip].bytes()/2)];
m_gfxdecode->gfx(m_sprite_gfx + chip)->prio_zoom_transpen(bitmap,cliprect,
code,
@@ -547,19 +487,19 @@ void aerofgt_state::pspikesb_draw_sprites( screen_device &screen, bitmap_ind16 &
{
int i;
- for (i = 4; i < m_spriteram3.bytes() / 2; i += 4)
+ for (i = 4; i < m_spriteram.bytes() / 2; i += 4)
{
int xpos, ypos, color, flipx, flipy, code;
- if (m_spriteram3[i + 3 - 4] & 0x8000)
+ if (m_spriteram[i + 3 - 4] & 0x8000)
break;
- xpos = (m_spriteram3[i + 2] & 0x1ff) - 34;
- ypos = 256 - (m_spriteram3[i + 3 - 4] & 0x1ff) - 33;
- code = m_spriteram3[i + 0] & 0x1fff;
+ xpos = (m_spriteram[i + 2] & 0x1ff) - 34;
+ ypos = 256 - (m_spriteram[i + 3 - 4] & 0x1ff) - 33;
+ code = m_spriteram[i + 0] & 0x1fff;
flipy = 0;
- flipx = m_spriteram3[i + 1] & 0x0800;
- color = m_spriteram3[i + 1] & 0x000f;
+ flipx = m_spriteram[i + 1] & 0x0800;
+ color = m_spriteram[i + 1] & 0x000f;
m_gfxdecode->gfx(m_sprite_gfx)->transpen(bitmap,cliprect,
code,
@@ -581,38 +521,34 @@ void aerofgt_state::pspikesb_draw_sprites( screen_device &screen, bitmap_ind16 &
void aerofgt_state::spikes91_draw_sprites( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect )
{
int i;
- uint8_t *lookup;
- lookup = memregion("user1")->base();
m_spritepalettebank = 1;
- for (i = m_spriteram3.bytes() / 2 - 4; i >= 4; i -= 4)
+ for (i = m_spriteram.bytes() / 2 - 4; i >= 4; i -= 4)
{
- int xpos, ypos, color, flipx, flipy, code, realcode;
+ int xpos, ypos, color, flipx, flipy, code;
- code = m_spriteram3[i + 0] & 0x1fff;
+ code = m_spriteram[i + 0] & 0x1fff;
if (!code)
continue;
- xpos = (m_spriteram3[i + 2] & 0x01ff) - 16;
- ypos = 256 - (m_spriteram3[i + 1] & 0x00ff) - 26;
+ xpos = (m_spriteram[i + 2] & 0x01ff) - 16;
+ ypos = 256 - (m_spriteram[i + 1] & 0x00ff) - 26;
flipy = 0;
- flipx = m_spriteram3[i + 3] & 0x8000;
- color = ((m_spriteram3[i + 3] & 0x00f0) >> 4);
+ flipx = m_spriteram[i + 3] & 0x8000;
+ color = ((m_spriteram[i + 3] & 0x00f0) >> 4);
code |= m_spikes91_lookup * 0x2000;
- realcode = (lookup[code] << 8) + lookup[0x10000 + code];
-
m_gfxdecode->gfx(m_sprite_gfx)->transpen(bitmap,cliprect,
- realcode,
+ m_sprlookuprom[code],
color,
flipx,flipy,
xpos,ypos,15);
/* wrap around y */
m_gfxdecode->gfx(m_sprite_gfx)->transpen(bitmap,cliprect,
- realcode,
+ m_sprlookuprom[code],
color,
flipx,flipy,
xpos,ypos + 512,15);
@@ -626,23 +562,23 @@ void aerofgt_state::aerfboot_draw_sprites( screen_device &screen, bitmap_ind16 &
last = ((m_rasterram[0x404 / 2] << 5) - 0x8000) / 2;
- for (attr_start = m_spriteram3.bytes() / 2 - 4; attr_start >= last; attr_start -= 4)
+ for (attr_start = m_spriteram.bytes() / 2 - 4; attr_start >= last; attr_start -= 4)
{
int code;
int ox, oy, sx, sy, zoomx, zoomy, flipx, flipy, color, pri;
- ox = m_spriteram3[attr_start + 1] & 0x01ff;
- oy = m_spriteram3[attr_start + 0] & 0x01ff;
- flipx = m_spriteram3[attr_start + 2] & 0x0800;
- flipy = m_spriteram3[attr_start + 2] & 0x8000;
- color = m_spriteram3[attr_start + 2] & 0x000f;
+ ox = m_spriteram[attr_start + 1] & 0x01ff;
+ oy = m_spriteram[attr_start + 0] & 0x01ff;
+ flipx = m_spriteram[attr_start + 2] & 0x0800;
+ flipy = m_spriteram[attr_start + 2] & 0x8000;
+ color = m_spriteram[attr_start + 2] & 0x000f;
- zoomx = (m_spriteram3[attr_start + 1] & 0xf000) >> 12;
- zoomy = (m_spriteram3[attr_start + 0] & 0xf000) >> 12;
- pri = m_spriteram3[attr_start + 2] & 0x0010;
- code = m_spriteram3[attr_start + 3] & 0x1fff;
+ zoomx = (m_spriteram[attr_start + 1] & 0xf000) >> 12;
+ zoomy = (m_spriteram[attr_start + 0] & 0xf000) >> 12;
+ pri = m_spriteram[attr_start + 2] & 0x0010;
+ code = m_spriteram[attr_start + 3] & 0x1fff;
- if (!(m_spriteram3[attr_start + 2] & 0x0040))
+ if (!(m_spriteram[attr_start + 2] & 0x0040))
code |= 0x2000;
zoomx = 32 + zoomx;
@@ -664,23 +600,23 @@ void aerofgt_state::aerfboot_draw_sprites( screen_device &screen, bitmap_ind16 &
last = ((m_rasterram[0x402 / 2] << 5) - 0x8000) / 2;
- for (attr_start = ((m_spriteram3.bytes() / 2) / 2) - 4; attr_start >= last; attr_start -= 4)
+ for (attr_start = ((m_spriteram.bytes() / 2) / 2) - 4; attr_start >= last; attr_start -= 4)
{
int code;
int ox, oy, sx, sy, zoomx, zoomy, flipx, flipy, color, pri;
- ox = m_spriteram3[attr_start + 1] & 0x01ff;
- oy = m_spriteram3[attr_start + 0] & 0x01ff;
- flipx = m_spriteram3[attr_start + 2] & 0x0800;
- flipy = m_spriteram3[attr_start + 2] & 0x8000;
- color = m_spriteram3[attr_start + 2] & 0x000f;
+ ox = m_spriteram[attr_start + 1] & 0x01ff;
+ oy = m_spriteram[attr_start + 0] & 0x01ff;
+ flipx = m_spriteram[attr_start + 2] & 0x0800;
+ flipy = m_spriteram[attr_start + 2] & 0x8000;
+ color = m_spriteram[attr_start + 2] & 0x000f;
- zoomx = (m_spriteram3[attr_start + 1] & 0xf000) >> 12;
- zoomy = (m_spriteram3[attr_start + 0] & 0xf000) >> 12;
- pri = m_spriteram3[attr_start + 2] & 0x0010;
- code = m_spriteram3[attr_start + 3] & 0x1fff;
+ zoomx = (m_spriteram[attr_start + 1] & 0xf000) >> 12;
+ zoomy = (m_spriteram[attr_start + 0] & 0xf000) >> 12;
+ pri = m_spriteram[attr_start + 2] & 0x0010;
+ code = m_spriteram[attr_start + 3] & 0x1fff;
- if (!(m_spriteram3[attr_start + 2] & 0x0040))
+ if (!(m_spriteram[attr_start + 2] & 0x0040))
code |= 0x2000;
zoomx = 32 + zoomx;
@@ -726,13 +662,13 @@ uint32_t aerofgt_state::screen_update_pspikesb(screen_device &screen, bitmap_ind
{
int i, scrolly;
- m_bg1_tilemap->set_scroll_rows(256);
- scrolly = m_bg1scrolly;
+ m_tilemap[0]->set_scroll_rows(256);
+ scrolly = m_scrolly[0];
for (i = 0; i < 256; i++)
- m_bg1_tilemap->set_scrollx((i + scrolly) & 0xff, m_rasterram[i] + 22);
- m_bg1_tilemap->set_scrolly(0, scrolly);
+ m_tilemap[0]->set_scrollx((i + scrolly) & 0xff, m_rasterram[i] + 22);
+ m_tilemap[0]->set_scrolly(0, scrolly);
- m_bg1_tilemap->draw(screen, bitmap, cliprect, 0, 0);
+ m_tilemap[0]->draw(screen, bitmap, cliprect, 0, 0);
pspikesb_draw_sprites(screen, bitmap, cliprect);
return 0;
}
@@ -745,14 +681,14 @@ uint32_t aerofgt_state::screen_update_spikes91(screen_device &screen, bitmap_ind
int count;
gfx_element *gfx = m_gfxdecode->gfx(0);
- m_bg1_tilemap->set_scroll_rows(256);
- scrolly = m_bg1scrolly;
+ m_tilemap[0]->set_scroll_rows(256);
+ scrolly = m_scrolly[0];
for (i = 0; i < 256; i++)
- m_bg1_tilemap->set_scrollx((i + scrolly) & 0xff, m_rasterram[i + 0x01f0 / 2] + 0x96 + 0x16);
- m_bg1_tilemap->set_scrolly(0, scrolly);
+ m_tilemap[0]->set_scrollx((i + scrolly) & 0xff, m_rasterram[i + 0x01f0 / 2] + 0x96 + 0x16);
+ m_tilemap[0]->set_scrolly(0, scrolly);
- m_bg1_tilemap->draw(screen, bitmap, cliprect, 0, 0);
+ m_tilemap[0]->draw(screen, bitmap, cliprect, 0, 0);
spikes91_draw_sprites(screen, bitmap, cliprect);
/* we could use a tilemap, but it's easier to just do it here */
@@ -783,18 +719,18 @@ uint32_t aerofgt_state::screen_update_aerfboot(screen_device &screen, bitmap_ind
{
int i, scrolly;
- m_bg1_tilemap->set_scroll_rows(512);
- scrolly = m_bg1scrolly + 2;
+ m_tilemap[0]->set_scroll_rows(512);
+ scrolly = m_scrolly[0] + 2;
for (i = 0; i < 256; i++)
- m_bg1_tilemap->set_scrollx((i + scrolly) & 0x1ff, m_rasterram[7] + 174);
- m_bg1_tilemap->set_scrolly(0, scrolly);
- m_bg2_tilemap->set_scrollx(0, m_bg2scrollx + 172);
- m_bg2_tilemap->set_scrolly(0, m_bg2scrolly + 2);
+ m_tilemap[0]->set_scrollx((i + scrolly) & 0x1ff, m_rasterram[7] + 174);
+ m_tilemap[0]->set_scrolly(0, scrolly);
+ m_tilemap[1]->set_scrollx(0, m_scrollx[1] + 172);
+ m_tilemap[1]->set_scrolly(0, m_scrolly[1] + 2);
screen.priority().fill(0, cliprect);
- m_bg1_tilemap->draw(screen, bitmap, cliprect, 0, 0);
- m_bg2_tilemap->draw(screen, bitmap, cliprect, 0, 1);
+ m_tilemap[0]->draw(screen, bitmap, cliprect, 0, 0);
+ m_tilemap[1]->draw(screen, bitmap, cliprect, 0, 1);
/* we use the priority buffer so sprites are drawn front to back */
aerfboot_draw_sprites(screen, bitmap, cliprect);
@@ -806,19 +742,19 @@ uint32_t aerofgt_state::screen_update_aerfboo2(screen_device &screen, bitmap_ind
{
int i, scrolly;
- m_bg1_tilemap->set_scroll_rows(512);
- scrolly = m_bg1scrolly + 2;
+ m_tilemap[0]->set_scroll_rows(512);
+ scrolly = m_scrolly[0] + 2;
for (i = 0; i < 256; i++)
-// m_bg1_tilemap->set_scrollx((i + scrolly) & 0x1ff, m_rasterram[i] - 11);
- m_bg1_tilemap->set_scrollx((i + scrolly) & 0x1ff, m_rasterram[7] - 11);
- m_bg1_tilemap->set_scrolly(0, scrolly);
- m_bg2_tilemap->set_scrollx(0, m_bg2scrollx - 7);
- m_bg2_tilemap->set_scrolly(0, m_bg2scrolly + 2);
+// m_tilemap[0]->set_scrollx((i + scrolly) & 0x1ff, m_rasterram[i] - 11);
+ m_tilemap[0]->set_scrollx((i + scrolly) & 0x1ff, m_rasterram[7] - 11);
+ m_tilemap[0]->set_scrolly(0, scrolly);
+ m_tilemap[1]->set_scrollx(0, m_scrollx[1] - 7);
+ m_tilemap[1]->set_scrolly(0, m_scrolly[1] + 2);
screen.priority().fill(0, cliprect);
- m_bg1_tilemap->draw(screen, bitmap, cliprect, 0, 0);
- m_bg2_tilemap->draw(screen, bitmap, cliprect, 0, 1);
+ m_tilemap[0]->draw(screen, bitmap, cliprect, 0, 0);
+ m_tilemap[1]->draw(screen, bitmap, cliprect, 0, 1);
/* we use the priority buffer so sprites are drawn front to back */
aerfboo2_draw_sprites(screen, bitmap, cliprect, 1, -1); //ship
@@ -833,25 +769,25 @@ uint32_t aerofgt_state::screen_update_wbbc97(screen_device &screen, bitmap_rgb32
{
int i, scrolly;
- m_bg1_tilemap->set_scroll_rows(256);
- scrolly = m_bg1scrolly;
+ m_tilemap[0]->set_scroll_rows(256);
+ scrolly = m_scrolly[0];
for (i = 0; i < 256; i++)
- m_bg1_tilemap->set_scrollx((i + scrolly) & 0xff, m_rasterram[i]);
- m_bg1_tilemap->set_scrolly(0, scrolly);
+ m_tilemap[0]->set_scrollx((i + scrolly) & 0xff, m_rasterram[i]);
+ m_tilemap[0]->set_scrolly(0, scrolly);
screen.priority().fill(0, cliprect);
if (m_wbbc97_bitmap_enable)
{
wbbc97_draw_bitmap(bitmap);
- m_bg1_tilemap->draw(screen, bitmap, cliprect, 0, 0);
+ m_tilemap[0]->draw(screen, bitmap, cliprect, 0, 0);
}
else
{
- m_bg1_tilemap->draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
+ m_tilemap[0]->draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
}
- m_spr_old->turbofrc_draw_sprites(m_spriteram3,m_spriteram3.bytes(),m_spritepalettebank, bitmap, cliprect, screen.priority(), 1, m_flip_screen);
- m_spr_old->turbofrc_draw_sprites(m_spriteram3,m_spriteram3.bytes(),m_spritepalettebank, bitmap, cliprect, screen.priority(), 0, m_flip_screen);
+ m_spr_old[0]->turbofrc_draw_sprites(m_spriteram,m_spriteram.bytes(),m_spritepalettebank, bitmap, cliprect, screen.priority(), 1, m_flip_screen);
+ m_spr_old[0]->turbofrc_draw_sprites(m_spriteram,m_spriteram.bytes(),m_spritepalettebank, bitmap, cliprect, screen.priority(), 0, m_flip_screen);
return 0;
}