diff options
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 |
commit | 3e338cd0ec450f98b78b4dee43d65c9804b6d39e (patch) | |
tree | 1d95fc21bf5a454204cafb0adbf8f348b1138463 | |
parent | cbe6e758f898ab7c2c0b539ab87153753e95d2c2 (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.cpp | 283 | ||||
-rw-r--r-- | src/mame/includes/aerofgt.h | 82 | ||||
-rw-r--r-- | src/mame/video/aerofgt.cpp | 466 |
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; } |