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
This commit is contained in:
cam900 2018-03-29 07:29:29 +09:00 committed by ajrhacker
parent cbe6e758f8
commit 3e338cd0ec
3 changed files with 377 additions and 452 deletions

View File

@ -128,20 +128,39 @@ WRITE8_MEMBER(aerofgt_state::karatblzbl_d7759_reset_w)
m_upd7759->reset_w(data & 0x80); 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) void aerofgt_state::pspikes_map(address_map &map)
{ {
map(0x000000, 0x03ffff).rom(); map(0x000000, 0x03ffff).rom();
map(0x100000, 0x10ffff).ram(); /* work RAM */ map(0x100000, 0x10ffff).ram(); /* work RAM */
map(0x200000, 0x203fff).ram().share("spriteram1"); map(0x200000, 0x203fff).ram().share("sprlookupram1");
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(0xffc000, 0xffc3ff).writeonly().share("spriteram3"); map(0xffc000, 0xffc3ff).writeonly().share("spriteram");
map(0xffd000, 0xffdfff).ram().share("rasterram"); /* bg1 scroll registers */ map(0xffd000, 0xffdfff).ram().share("rasterram"); /* bg1 scroll registers */
map(0xffe000, 0xffefff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); map(0xffe000, 0xffefff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
map(0xfff000, 0xfff001).portr("IN0"); map(0xfff000, 0xfff001).portr("IN0");
map(0xfff001, 0xfff001).w(this, FUNC(aerofgt_state::pspikes_palette_bank_w)); map(0xfff001, 0xfff001).w(this, FUNC(aerofgt_state::pspikes_palette_bank_w));
map(0xfff002, 0xfff003).portr("IN1"); map(0xfff002, 0xfff003).portr("IN1");
map(0xfff003, 0xfff003).w(this, FUNC(aerofgt_state::pspikes_gfxbank_w)); 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(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); 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(0x000000, 0x03ffff).rom();
map(0x100000, 0x10ffff).ram(); /* work RAM */ map(0x100000, 0x10ffff).ram(); /* work RAM */
map(0x200000, 0x203fff).ram().share("spriteram1"); map(0x200000, 0x203fff).ram().share("sprlookupram1");
map(0xc04000, 0xc04001).nopw(); 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(0xffc000, 0xffcbff).ram().share("spriteram3"); map(0xffc000, 0xffcbff).ram().share("spriteram");
map(0xffd000, 0xffdfff).ram().share("rasterram"); /* bg1 scroll registers */ map(0xffd000, 0xffdfff).ram().share("rasterram"); /* bg1 scroll registers */
map(0xffd200, 0xffd201).w(this, FUNC(aerofgt_state::pspikesb_gfxbank_w)); 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(0xffe000, 0xffefff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
map(0xfff000, 0xfff001).portr("IN0"); map(0xfff000, 0xfff001).portr("IN0");
map(0xfff002, 0xfff003).portr("IN1"); 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(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(0xfff008, 0xfff009).w(this, FUNC(aerofgt_state::pspikesb_oki_banking_w));
map(0xfff400, 0xfff403).nopw(); // GGA access map(0xfff400, 0xfff403).nopw(); // GGA access
@ -169,20 +188,20 @@ void aerofgt_state::spikes91_map(address_map &map)
{ {
map(0x000000, 0x03ffff).rom(); map(0x000000, 0x03ffff).rom();
map(0x100000, 0x10ffff).ram(); /* work RAM */ map(0x100000, 0x10ffff).ram(); /* work RAM */
map(0x200000, 0x203fff).ram().share("spriteram1"); map(0x200000, 0x203fff).ram().share("sprlookupram1");
map(0xc04000, 0xc04001).nopw(); 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(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(0xffd200, 0xffd201).w(this, FUNC(aerofgt_state::pspikesb_gfxbank_w));
map(0xffd000, 0xffdfff).ram().share("rasterram"); /* bg1 scroll registers */ map(0xffd000, 0xffdfff).ram().share("rasterram"); /* bg1 scroll registers */
map(0xffe000, 0xffefff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); map(0xffe000, 0xffefff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
map(0xfff000, 0xfff001).portr("IN0"); map(0xfff000, 0xfff001).portr("IN0");
map(0xfff002, 0xfff003).portr("IN1"); map(0xfff002, 0xfff003).portr("IN1");
map(0xfff003, 0xfff003).w(this, FUNC(aerofgt_state::pspikes_gfxbank_w)); 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(0xfff006, 0xfff007).noprw();
map(0xfff008, 0xfff009).w(this, FUNC(aerofgt_state::spikes91_lookup_w)); 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(0x000000, 0x03ffff).rom();
map(0x100000, 0x10ffff).ram(); /* work RAM */ map(0x100000, 0x10ffff).ram(); /* work RAM */
map(0x200000, 0x203fff).ram().share("spriteram1"); map(0x200000, 0x203fff).ram().share("sprlookupram1");
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(0xffc000, 0xffcbff).ram().share("spriteram3"); map(0xffc000, 0xffcbff).ram().share("spriteram");
map(0xffd000, 0xffdfff).ram().share("rasterram"); /* bg1 scroll registers */ map(0xffd000, 0xffdfff).ram().share("rasterram"); /* bg1 scroll registers */
map(0xffe000, 0xffefff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); map(0xffe000, 0xffefff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
map(0xfff000, 0xfff001).portr("IN0"); map(0xfff000, 0xfff001).portr("IN0");
@ -201,7 +220,7 @@ void aerofgt_state::pspikesc_map(address_map &map)
map(0xfff002, 0xfff003).portr("IN1"); map(0xfff002, 0xfff003).portr("IN1");
map(0xfff003, 0xfff003).w(this, FUNC(aerofgt_state::pspikes_gfxbank_w)); map(0xfff003, 0xfff003).w(this, FUNC(aerofgt_state::pspikes_gfxbank_w));
map(0xfff004, 0xfff005).portr("DSW"); 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(0xfff007, 0xfff007).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
map(0xfff400, 0xfff403).nopw(); // GGA access map(0xfff400, 0xfff403).nopw(); // GGA access
} }
@ -210,16 +229,16 @@ void aerofgt_state::kickball_map(address_map &map)
{ {
map(0x000000, 0x07ffff).rom(); map(0x000000, 0x07ffff).rom();
map(0x100000, 0x10ffff).ram(); /* work RAM */ map(0x100000, 0x10ffff).ram(); /* work RAM */
map(0x200000, 0x20ffff).ram().share("spriteram1"); map(0x200000, 0x20ffff).ram().share("sprlookupram1");
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(0xffc000, 0xffc3ff).writeonly().share("spriteram3"); map(0xffc000, 0xffc3ff).writeonly().share("spriteram");
map(0xffd000, 0xffdfff).ram().share("rasterram"); /* bg1 scroll registers */ map(0xffd000, 0xffdfff).ram().share("rasterram"); /* bg1 scroll registers */
map(0xffe000, 0xffefff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); map(0xffe000, 0xffefff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
map(0xfff000, 0xfff001).portr("IN0"); map(0xfff000, 0xfff001).portr("IN0");
map(0xfff001, 0xfff001).w(this, FUNC(aerofgt_state::pspikes_palette_bank_w)); map(0xfff001, 0xfff001).w(this, FUNC(aerofgt_state::pspikes_palette_bank_w));
map(0xfff002, 0xfff003).portr("IN1"); map(0xfff002, 0xfff003).portr("IN1");
map(0xfff003, 0xfff003).w(this, FUNC(aerofgt_state::kickball_gfxbank_w)); 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(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 map(0xfff400, 0xfff403).nopw(); // GGA access
} }
@ -228,13 +247,13 @@ void aerofgt_state::karatblz_map(address_map &map)
{ {
map.global_mask(0xfffff); map.global_mask(0xfffff);
map(0x000000, 0x07ffff).rom(); map(0x000000, 0x07ffff).rom();
map(0x080000, 0x081fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg1videoram_w)).share("bg1videoram"); map(0x080000, 0x081fff).ram().w(this, FUNC(aerofgt_state::vram_w<0>)).share("vram.0");
map(0x082000, 0x083fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg2videoram_w)).share("bg2videoram"); map(0x082000, 0x083fff).ram().w(this, FUNC(aerofgt_state::vram_w<1>)).share("vram.1");
map(0x0a0000, 0x0affff).ram().share("spriteram1"); map(0x0a0000, 0x0affff).ram().share("sprlookupram1");
map(0x0b0000, 0x0bffff).ram().share("spriteram2"); map(0x0b0000, 0x0bffff).ram().share("sprlookupram2");
map(0x0c0000, 0x0cffff).ram(); /* work RAM */ map(0x0c0000, 0x0cffff).ram(); /* work RAM */
map(0x0f8000, 0x0fbfff).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(0x0fe000, 0x0fe7ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
map(0x0ff000, 0x0ff001).portr("IN0"); map(0x0ff000, 0x0ff001).portr("IN0");
map(0x0ff000, 0x0ff000).w(this, FUNC(aerofgt_state::spinlbrk_flip_screen_w)); 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(0x0ff004, 0x0ff005).portr("IN2");
map(0x0ff006, 0x0ff007).portr("IN3"); map(0x0ff006, 0x0ff007).portr("IN3");
map(0x0ff007, 0x0ff007).w(m_soundlatch, FUNC(generic_latch_8_device::write)); 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(0x0ff00b, 0x0ff00b).r(this, FUNC(aerofgt_state::pending_command_r));
map(0x0ff00a, 0x0ff00b).w(this, FUNC(aerofgt_state::aerofgt_bg1scrolly_w)); map(0x0ff00a, 0x0ff00b).w(this, FUNC(aerofgt_state::scrolly_w<0>));
map(0x0ff00c, 0x0ff00d).w(this, FUNC(aerofgt_state::aerofgt_bg2scrollx_w)); map(0x0ff00c, 0x0ff00d).w(this, FUNC(aerofgt_state::scrollx_w<1>));
map(0x0ff00e, 0x0ff00f).w(this, FUNC(aerofgt_state::aerofgt_bg2scrolly_w)); map(0x0ff00e, 0x0ff00f).w(this, FUNC(aerofgt_state::scrolly_w<1>));
map(0x0ff400, 0x0ff403).w("gga", FUNC(vsystem_gga_device::write)).umask16(0x00ff); 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.global_mask(0xfffff);
map(0x000000, 0x07ffff).rom(); map(0x000000, 0x07ffff).rom();
map(0x080000, 0x081fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg1videoram_w)).share("bg1videoram"); map(0x080000, 0x081fff).ram().w(this, FUNC(aerofgt_state::vram_w<0>)).share("vram.0");
map(0x082000, 0x083fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg2videoram_w)).share("bg2videoram"); map(0x082000, 0x083fff).ram().w(this, FUNC(aerofgt_state::vram_w<1>)).share("vram.1");
map(0x0a0000, 0x0affff).ram().share("spriteram1"); map(0x0a0000, 0x0affff).ram().share("sprlookupram1");
map(0x0b0000, 0x0bffff).ram().share("spriteram2"); map(0x0b0000, 0x0bffff).ram().share("sprlookupram2");
map(0x0c0000, 0x0cffff).ram(); /* work RAM */ map(0x0c0000, 0x0cffff).ram(); /* work RAM */
map(0x0f8000, 0x0fbfff).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(0x0fe000, 0x0fe7ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
map(0x0ff000, 0x0ff001).portr("IN0"); map(0x0ff000, 0x0ff001).portr("IN0");
map(0x0ff000, 0x0ff000).w(this, FUNC(aerofgt_state::spinlbrk_flip_screen_w)); 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(0x0ff004, 0x0ff005).portr("IN2");
map(0x0ff006, 0x0ff007).portr("IN3"); map(0x0ff006, 0x0ff007).portr("IN3");
map(0x0ff007, 0x0ff007).w(this, FUNC(aerofgt_state::karatblzbl_soundlatch_w)); 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(0x0ff00b, 0x0ff00b).r(this, FUNC(aerofgt_state::pending_command_r));
map(0x0ff00a, 0x0ff00b).w(this, FUNC(aerofgt_state::aerofgt_bg1scrolly_w)); map(0x0ff00a, 0x0ff00b).w(this, FUNC(aerofgt_state::scrolly_w<0>));
map(0x0ff00c, 0x0ff00d).w(this, FUNC(aerofgt_state::aerofgt_bg2scrollx_w)); map(0x0ff00c, 0x0ff00d).w(this, FUNC(aerofgt_state::scrollx_w<1>));
map(0x0ff00e, 0x0ff00f).w(this, FUNC(aerofgt_state::aerofgt_bg2scrolly_w)); map(0x0ff00e, 0x0ff00f).w(this, FUNC(aerofgt_state::scrolly_w<1>));
map(0x0ff400, 0x0ff403).nopw(); // GGA access map(0x0ff400, 0x0ff403).nopw(); // GGA access
} }
void aerofgt_state::spinlbrk_map(address_map &map) void aerofgt_state::spinlbrk_map(address_map &map)
{ {
map(0x000000, 0x03ffff).rom(); map(0x000000, 0x03ffff).rom();
map(0x080000, 0x080fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg1videoram_w)).share("bg1videoram"); map(0x080000, 0x080fff).ram().w(this, FUNC(aerofgt_state::vram_w<0>)).share("vram.0");
map(0x082000, 0x082fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg2videoram_w)).share("bg2videoram"); map(0x082000, 0x082fff).ram().w(this, FUNC(aerofgt_state::vram_w<1>)).share("vram.1");
map(0xff8000, 0xffbfff).ram(); /* work RAM */ 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(0xffd000, 0xffd1ff).ram().share("rasterram"); /* bg1 scroll registers */
map(0xffe000, 0xffe7ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); map(0xffe000, 0xffe7ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
map(0xfff000, 0xfff001).portr("IN0"); map(0xfff000, 0xfff001).portr("IN0");
map(0xfff000, 0xfff000).w(this, FUNC(aerofgt_state::spinlbrk_flip_screen_w)); map(0xfff000, 0xfff000).w(this, FUNC(aerofgt_state::spinlbrk_flip_screen_w));
map(0xfff001, 0xfff001).w(this, FUNC(aerofgt_state::spinlbrk_gfxbank_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(0xfff004, 0xfff005).portr("DSW");
map(0xfff007, 0xfff007).w(m_soundlatch, FUNC(generic_latch_8_device::write)); map(0xfff007, 0xfff007).w(m_soundlatch, FUNC(generic_latch_8_device::write));
// map(0xfff008, 0xfff009); - read when analog inputs are enabled // 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.global_mask(0xfffff);
map(0x000000, 0x0bffff).rom(); map(0x000000, 0x0bffff).rom();
map(0x0c0000, 0x0cffff).ram(); /* work RAM */ map(0x0c0000, 0x0cffff).ram(); /* work RAM */
map(0x0d0000, 0x0d1fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg1videoram_w)).share("bg1videoram"); map(0x0d0000, 0x0d1fff).ram().w(this, FUNC(aerofgt_state::vram_w<0>)).share("vram.0");
map(0x0d2000, 0x0d3fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg2videoram_w)).share("bg2videoram"); map(0x0d2000, 0x0d3fff).ram().w(this, FUNC(aerofgt_state::vram_w<1>)).share("vram.1");
map(0x0e0000, 0x0e3fff).ram().share("spriteram1"); map(0x0e0000, 0x0e3fff).ram().share("sprlookupram1");
map(0x0e4000, 0x0e7fff).ram().share("spriteram2"); map(0x0e4000, 0x0e7fff).ram().share("sprlookupram2");
map(0x0f8000, 0x0fbfff).ram(); /* work RAM */ 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(0x0fd000, 0x0fdfff).ram().share("rasterram"); /* bg1 scroll registers */
map(0x0fe000, 0x0fe7ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); map(0x0fe000, 0x0fe7ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
map(0x0ff000, 0x0ff001).portr("IN0"); map(0x0ff000, 0x0ff001).portr("IN0");
map(0x0ff001, 0x0ff001).w(this, FUNC(aerofgt_state::turbofrc_flip_screen_w)); 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(0x0ff002, 0x0ff003).portr("IN1").w(this, FUNC(aerofgt_state::scrolly_w<0>));
map(0x0ff004, 0x0ff005).portr("DSW").w(this, FUNC(aerofgt_state::aerofgt_bg2scrollx_w)); 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(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, 0x0ff009).portr("IN2");
map(0x0ff008, 0x0ff00b).w(this, FUNC(aerofgt_state::turbofrc_gfxbank_w)); map(0x0ff008, 0x0ff00b).w(this, FUNC(aerofgt_state::turbofrc_gfxbank_w));
map(0x0ff00c, 0x0ff00d).nopw(); /* related to bg2 (written together with the scroll registers) */ 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(0x000000, 0x07ffff).rom();
map(0x0c0000, 0x0cffff).ram(); /* work RAM */ map(0x0c0000, 0x0cffff).ram(); /* work RAM */
map(0x0d0000, 0x0d1fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg1videoram_w)).share("bg1videoram"); map(0x0d0000, 0x0d1fff).ram().w(this, FUNC(aerofgt_state::vram_w<0>)).share("vram.0");
map(0x0d2000, 0x0d3fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg2videoram_w)).share("bg2videoram"); map(0x0d2000, 0x0d3fff).ram().w(this, FUNC(aerofgt_state::vram_w<1>)).share("vram.1");
map(0x0e0000, 0x0e3fff).ram().share("spriteram1"); map(0x0e0000, 0x0e3fff).ram().share("sprlookupram1");
map(0x0e4000, 0x0e7fff).ram().share("spriteram2"); map(0x0e4000, 0x0e7fff).ram().share("sprlookupram2");
map(0x0f8000, 0x0fbfff).ram(); /* work RAM */ 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(0x0fd000, 0x0fd7ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
map(0x0fe000, 0x0fe001).portr("IN0"); map(0x0fe000, 0x0fe001).portr("IN0");
map(0x0fe001, 0x0fe001).w(this, FUNC(aerofgt_state::turbofrc_flip_screen_w)); 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(0x0fe002, 0x0fe003).portr("IN1").w(this, FUNC(aerofgt_state::scrolly_w<0>));
map(0x0fe004, 0x0fe005).portr("DSW1").w(this, FUNC(aerofgt_state::aerofgt_bg2scrollx_w)); 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(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, 0x0fe009).portr("DSW2");
map(0x0fe008, 0x0fe00b).w(this, FUNC(aerofgt_state::turbofrc_gfxbank_w)); map(0x0fe008, 0x0fe00b).w(this, FUNC(aerofgt_state::turbofrc_gfxbank_w));
map(0x0fe00e, 0x0fe00e).w(m_soundlatch, FUNC(generic_latch_8_device::write)); 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(0x1b0000, 0x1b07ff).ram().share("rasterram"); /* used only for the scroll registers */
map(0x1b0800, 0x1b0801).ram(); /* tracks watchdog state */ map(0x1b0800, 0x1b0801).ram(); /* tracks watchdog state */
map(0x1b0ff0, 0x1b0fff).ram(); /* stack area during boot */ map(0x1b0ff0, 0x1b0fff).ram(); /* stack area during boot */
map(0x1b2000, 0x1b3fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg1videoram_w)).share("bg1videoram"); map(0x1b2000, 0x1b3fff).ram().w(this, FUNC(aerofgt_state::vram_w<0>)).share("vram.0");
map(0x1b4000, 0x1b5fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg2videoram_w)).share("bg2videoram"); map(0x1b4000, 0x1b5fff).ram().w(this, FUNC(aerofgt_state::vram_w<1>)).share("vram.1");
map(0x1c0000, 0x1c7fff).ram().share("spriteram1"); map(0x1c0000, 0x1c7fff).ram().share("sprlookupram1");
map(0x1d0000, 0x1d1fff).ram().share("spriteram3"); map(0x1d0000, 0x1d1fff).ram().share("spriteram");
map(0xfef000, 0xffefff).ram(); /* work RAM */ map(0xfef000, 0xffefff).ram(); /* work RAM */
map(0xffff80, 0xffff87).w(this, FUNC(aerofgt_state::aerofgt_gfxbank_w)); 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(0xffff88, 0xffff89).w(this, FUNC(aerofgt_state::scrolly_w<0>)); /* + something else in the top byte */
map(0xffff90, 0xffff91).w(this, FUNC(aerofgt_state::aerofgt_bg2scrolly_w)); /* + 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(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)); 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(0x000000, 0x07ffff).rom();
map(0x0c0000, 0x0cffff).ram(); /* work RAM */ map(0x0c0000, 0x0cffff).ram(); /* work RAM */
map(0x0d0000, 0x0d1fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg1videoram_w)).share("bg1videoram"); map(0x0d0000, 0x0d1fff).ram().w(this, FUNC(aerofgt_state::vram_w<0>)).share("vram.0");
map(0x0d2000, 0x0d3fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg2videoram_w)).share("bg2videoram"); map(0x0d2000, 0x0d3fff).ram().w(this, FUNC(aerofgt_state::vram_w<1>)).share("vram.1");
map(0x0e0000, 0x0e3fff).ram().share("spriteram1"); map(0x0e0000, 0x0e3fff).ram().share("sprlookupram1");
map(0x0e4000, 0x0e7fff).ram().share("spriteram2"); map(0x0e4000, 0x0e7fff).ram().share("sprlookupram2");
map(0x0f8000, 0x0fbfff).ram(); /* work RAM */ 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(0x0fd000, 0x0fd7ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
map(0x0fe000, 0x0fe001).portr("IN0"); map(0x0fe000, 0x0fe001).portr("IN0");
map(0x0fe002, 0x0fe003).portr("IN1"); map(0x0fe002, 0x0fe003).portr("IN1");
map(0x0fe004, 0x0fe005).portr("DSW1"); map(0x0fe004, 0x0fe005).portr("DSW1");
map(0x0fe008, 0x0fe009).portr("DSW2"); map(0x0fe008, 0x0fe009).portr("DSW2");
map(0x0fe002, 0x0fe003).w(this, FUNC(aerofgt_state::aerofgt_bg1scrolly_w)); map(0x0fe002, 0x0fe003).w(this, FUNC(aerofgt_state::scrolly_w<0>));
map(0x0fe004, 0x0fe005).w(this, FUNC(aerofgt_state::aerofgt_bg2scrollx_w)); map(0x0fe004, 0x0fe005).w(this, FUNC(aerofgt_state::scrollx_w<1>));
map(0x0fe006, 0x0fe007).w(this, FUNC(aerofgt_state::aerofgt_bg2scrolly_w)); map(0x0fe006, 0x0fe007).w(this, FUNC(aerofgt_state::scrolly_w<1>));
map(0x0fe008, 0x0fe00b).w(this, FUNC(aerofgt_state::turbofrc_gfxbank_w)); map(0x0fe008, 0x0fe00b).w(this, FUNC(aerofgt_state::turbofrc_gfxbank_w));
map(0x0fe00e, 0x0fe00e).w(m_soundlatch, FUNC(generic_latch_8_device::write)); map(0x0fe00e, 0x0fe00e).w(m_soundlatch, FUNC(generic_latch_8_device::write));
map(0x0fe010, 0x0fe011).nopw(); map(0x0fe010, 0x0fe011).nopw();
@ -392,7 +411,7 @@ void aerofgt_state::aerfboot_map(address_map &map)
map(0x0fe400, 0x0fe403).nopw(); // GGA access map(0x0fe400, 0x0fe403).nopw(); // GGA access
map(0x0ff000, 0x0fffff).ram().share("rasterram"); /* used only for the scroll registers */ map(0x0ff000, 0x0fffff).ram().share("rasterram"); /* used only for the scroll registers */
map(0x100000, 0x107fff).nopw(); map(0x100000, 0x107fff).nopw();
map(0x108000, 0x10bfff).ram().share("spriteram3"); map(0x108000, 0x10bfff).ram().share("spriteram");
map(0x10c000, 0x117fff).nopw(); map(0x10c000, 0x117fff).nopw();
} }
@ -400,20 +419,20 @@ void aerofgt_state::aerfboo2_map(address_map &map)
{ {
map(0x000000, 0x07ffff).rom(); map(0x000000, 0x07ffff).rom();
map(0x0c0000, 0x0cffff).ram(); /* work RAM */ map(0x0c0000, 0x0cffff).ram(); /* work RAM */
map(0x0d0000, 0x0d1fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg1videoram_w)).share("bg1videoram"); map(0x0d0000, 0x0d1fff).ram().w(this, FUNC(aerofgt_state::vram_w<0>)).share("vram.0");
map(0x0d2000, 0x0d3fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg2videoram_w)).share("bg2videoram"); map(0x0d2000, 0x0d3fff).ram().w(this, FUNC(aerofgt_state::vram_w<1>)).share("vram.1");
map(0x0e0000, 0x0e3fff).ram().share("spriteram1"); map(0x0e0000, 0x0e3fff).ram().share("sprlookupram1");
map(0x0e4000, 0x0e7fff).ram().share("spriteram2"); map(0x0e4000, 0x0e7fff).ram().share("sprlookupram2");
map(0x0f8000, 0x0fbfff).ram(); /* work RAM */ 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(0x0fd000, 0x0fd7ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
map(0x0fe000, 0x0fe001).portr("IN0"); map(0x0fe000, 0x0fe001).portr("IN0");
map(0x0fe002, 0x0fe003).portr("IN1"); map(0x0fe002, 0x0fe003).portr("IN1");
map(0x0fe004, 0x0fe005).portr("DSW1"); map(0x0fe004, 0x0fe005).portr("DSW1");
map(0x0fe008, 0x0fe009).portr("DSW2"); map(0x0fe008, 0x0fe009).portr("DSW2");
map(0x0fe002, 0x0fe003).w(this, FUNC(aerofgt_state::aerofgt_bg1scrolly_w)); map(0x0fe002, 0x0fe003).w(this, FUNC(aerofgt_state::scrolly_w<0>));
map(0x0fe004, 0x0fe005).w(this, FUNC(aerofgt_state::aerofgt_bg2scrollx_w)); map(0x0fe004, 0x0fe005).w(this, FUNC(aerofgt_state::scrollx_w<1>));
map(0x0fe006, 0x0fe007).w(this, FUNC(aerofgt_state::aerofgt_bg2scrolly_w)); map(0x0fe006, 0x0fe007).w(this, FUNC(aerofgt_state::scrolly_w<1>));
map(0x0fe008, 0x0fe00b).w(this, FUNC(aerofgt_state::turbofrc_gfxbank_w)); map(0x0fe008, 0x0fe00b).w(this, FUNC(aerofgt_state::turbofrc_gfxbank_w));
map(0x0fe006, 0x0fe006).r(m_oki, FUNC(okim6295_device::read)); map(0x0fe006, 0x0fe006).r(m_oki, FUNC(okim6295_device::read));
map(0x0fe00e, 0x0fe00e).w(m_oki, FUNC(okim6295_device::write)); 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(0x000000, 0x3fffff).rom();
map(0x500000, 0x50ffff).ram(); /* work RAM */ 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(0xa00000, 0xa3ffff).ram().share("bitmapram");
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(0xffc000, 0xffc3ff).writeonly().share("spriteram3"); map(0xffc000, 0xffc3ff).writeonly().share("spriteram");
map(0xffd000, 0xffdfff).ram().share("rasterram"); /* bg1 scroll registers */ map(0xffd000, 0xffdfff).ram().share("rasterram"); /* bg1 scroll registers */
map(0xffe000, 0xffefff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); map(0xffe000, 0xffefff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
map(0xfff000, 0xfff001).portr("IN0"); map(0xfff000, 0xfff001).portr("IN0");
map(0xfff001, 0xfff001).w(this, FUNC(aerofgt_state::pspikes_palette_bank_w)); map(0xfff001, 0xfff001).w(this, FUNC(aerofgt_state::pspikes_palette_bank_w));
map(0xfff002, 0xfff003).portr("IN1"); map(0xfff002, 0xfff003).portr("IN1");
map(0xfff003, 0xfff003).w(this, FUNC(aerofgt_state::pspikes_gfxbank_w)); 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(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(0xfff00e, 0xfff00f).w(this, FUNC(aerofgt_state::wbbc97_bitmap_enable_w));
map(0xfff400, 0xfff403).nopw(); // GGA access map(0xfff400, 0xfff403).nopw(); // GGA access
@ -1265,19 +1284,6 @@ static const gfx_layout pspikesb_spritelayout =
32*8 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 = static const gfx_layout aerofgt_spritelayout =
{ {
16,16, 16,16,
@ -1385,13 +1391,6 @@ static GFXDECODE_START( turbofrc )
GFXDECODE_ENTRY( "gfx4", 0, pspikes_spritelayout, 768, 16 ) GFXDECODE_ENTRY( "gfx4", 0, pspikes_spritelayout, 768, 16 )
GFXDECODE_END 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 ) static GFXDECODE_START( aerofgt )
GFXDECODE_ENTRY( "gfx1", 0, aerofgt_charlayout, 0, 16 ) GFXDECODE_ENTRY( "gfx1", 0, aerofgt_charlayout, 0, 16 )
GFXDECODE_ENTRY( "gfx1", 0, aerofgt_charlayout, 256, 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_ADD("palette", 2048)
MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB) 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_TILE_INDIRECT( aerofgt_state, aerofgt_old_tile_callback )
MCFG_VSYSTEM_SPR2_SET_GFXREGION(1) MCFG_VSYSTEM_SPR2_SET_GFXREGION(1)
MCFG_VSYSTEM_SPR2_GFXDECODE("gfxdecode") MCFG_VSYSTEM_SPR2_GFXDECODE("gfxdecode")
@ -1605,7 +1604,7 @@ MACHINE_CONFIG_START(aerofgt_state::kickball)
MCFG_PALETTE_ADD("palette", 2048) MCFG_PALETTE_ADD("palette", 2048)
MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB) 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_TILE_INDIRECT( aerofgt_state, aerofgt_old_tile_callback )
MCFG_VSYSTEM_SPR2_SET_GFXREGION(1) MCFG_VSYSTEM_SPR2_SET_GFXREGION(1)
MCFG_VSYSTEM_SPR2_GFXDECODE("gfxdecode") 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("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_TILE_INDIRECT( aerofgt_state, aerofgt_old_tile_callback )
MCFG_VSYSTEM_SPR2_SET_GFXREGION(1) MCFG_VSYSTEM_SPR2_SET_GFXREGION(1)
MCFG_VSYSTEM_SPR2_GFXDECODE("gfxdecode") 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("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_TILE_INDIRECT( aerofgt_state, aerofgt_old_tile_callback )
MCFG_VSYSTEM_SPR2_SET_GFXREGION(2) MCFG_VSYSTEM_SPR2_SET_GFXREGION(2)
MCFG_VSYSTEM_SPR2_GFXDECODE("gfxdecode") 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_TILE_INDIRECT( aerofgt_state, aerofgt_ol2_tile_callback )
MCFG_VSYSTEM_SPR2_SET_GFXREGION(3) MCFG_VSYSTEM_SPR2_SET_GFXREGION(3)
MCFG_VSYSTEM_SPR2_GFXDECODE("gfxdecode") MCFG_VSYSTEM_SPR2_GFXDECODE("gfxdecode")
@ -1752,12 +1751,12 @@ MACHINE_CONFIG_START(aerofgt_state::karatblzbl)
MCFG_PALETTE_ADD("palette", 1024) MCFG_PALETTE_ADD("palette", 1024)
MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB) 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_TILE_INDIRECT( aerofgt_state, aerofgt_old_tile_callback )
MCFG_VSYSTEM_SPR2_SET_GFXREGION(2) MCFG_VSYSTEM_SPR2_SET_GFXREGION(2)
MCFG_VSYSTEM_SPR2_GFXDECODE("gfxdecode") 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_TILE_INDIRECT( aerofgt_state, aerofgt_ol2_tile_callback )
MCFG_VSYSTEM_SPR2_SET_GFXREGION(3) MCFG_VSYSTEM_SPR2_SET_GFXREGION(3)
MCFG_VSYSTEM_SPR2_GFXDECODE("gfxdecode") 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("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_PRITYPE(1)
MCFG_VSYSTEM_SPR2_SET_GFXREGION(2) MCFG_VSYSTEM_SPR2_SET_GFXREGION(2)
MCFG_VSYSTEM_SPR2_GFXDECODE("gfxdecode") 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 ) // rom lookup MCFG_VSYSTEM_SPR2_SET_TILE_INDIRECT( aerofgt_state, spinbrk_tile_callback ) // rom lookup
MCFG_VSYSTEM_SPR2_SET_PRITYPE(1) MCFG_VSYSTEM_SPR2_SET_PRITYPE(1)
MCFG_VSYSTEM_SPR2_SET_GFXREGION(3) MCFG_VSYSTEM_SPR2_SET_GFXREGION(3)
MCFG_VSYSTEM_SPR2_GFXDECODE("gfxdecode") 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("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_TILE_INDIRECT( aerofgt_state, aerofgt_old_tile_callback )
MCFG_VSYSTEM_SPR2_SET_GFXREGION(2) MCFG_VSYSTEM_SPR2_SET_GFXREGION(2)
MCFG_VSYSTEM_SPR2_GFXDECODE("gfxdecode") 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_TILE_INDIRECT( aerofgt_state, aerofgt_ol2_tile_callback )
MCFG_VSYSTEM_SPR2_SET_GFXREGION(3) MCFG_VSYSTEM_SPR2_SET_GFXREGION(3)
MCFG_VSYSTEM_SPR2_GFXDECODE("gfxdecode") 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_UPDATE_DRIVER(aerofgt_state, screen_update_turbofrc)
MCFG_SCREEN_PALETTE("palette") MCFG_SCREEN_PALETTE("palette")
MCFG_GFXDECODE_ADD("gfxdecode", "palette", aerofgtb) MCFG_GFXDECODE_ADD("gfxdecode", "palette", turbofrc)
MCFG_PALETTE_ADD("palette", 1024) MCFG_PALETTE_ADD("palette", 1024)
MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB) MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
MCFG_DEVICE_ADD("gga", VSYSTEM_GGA, XTAL(14'318'181) / 2) // divider not verified 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_TILE_INDIRECT( aerofgt_state, aerofgt_old_tile_callback )
MCFG_VSYSTEM_SPR2_SET_GFXREGION(2) MCFG_VSYSTEM_SPR2_SET_GFXREGION(2)
MCFG_VSYSTEM_SPR2_GFXDECODE("gfxdecode") 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_TILE_INDIRECT( aerofgt_state, aerofgt_ol2_tile_callback )
MCFG_VSYSTEM_SPR2_SET_GFXREGION(3) MCFG_VSYSTEM_SPR2_SET_GFXREGION(3)
MCFG_VSYSTEM_SPR2_GFXDECODE("gfxdecode") 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("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_TILE_INDIRECT( aerofgt_state, aerofgt_old_tile_callback )
MCFG_VSYSTEM_SPR2_SET_GFXREGION(1) MCFG_VSYSTEM_SPR2_SET_GFXREGION(1)
MCFG_VSYSTEM_SPR2_GFXDECODE("gfxdecode") MCFG_VSYSTEM_SPR2_GFXDECODE("gfxdecode")
@ -2377,9 +2376,9 @@ ROM_START( spikes91 )
ROM_LOAD( "13.ic120", 0x80000, 0x40000, CRC(89213a8c) SHA1(8524d5c14669d9b03f1fe050c4318d4111bc8ef7) ) ROM_LOAD( "13.ic120", 0x80000, 0x40000, CRC(89213a8c) SHA1(8524d5c14669d9b03f1fe050c4318d4111bc8ef7) )
ROM_LOAD( "14.ic121", 0xc0000, 0x40000, CRC(468cbf5b) SHA1(60fbc2771e40f8de51a51891b8ddcc14e2b1e52c) ) ROM_LOAD( "14.ic121", 0xc0000, 0x40000, CRC(468cbf5b) SHA1(60fbc2771e40f8de51a51891b8ddcc14e2b1e52c) )
ROM_REGION( 0x020000, "user1", 0 ) /* lookup tables for the sprites */ ROM_REGION16_BE( 0x020000, "sprlookuprom", 0 ) /* lookup tables for the sprites */
ROM_LOAD( "10.ic104", 0x00000, 0x10000, CRC(769ade77) SHA1(9cb581d02592c69f37d4b5a902d3515f40915ec4) ) ROM_LOAD16_BYTE( "10.ic104", 0x00000, 0x10000, CRC(769ade77) SHA1(9cb581d02592c69f37d4b5a902d3515f40915ec4) )
ROM_LOAD( "9.ic103", 0x10000, 0x10000, CRC(201cb748) SHA1(f78d384e4e9c5996a278f76fb4d5f28812a27de5) ) ROM_LOAD16_BYTE( "9.ic103", 0x00001, 0x10000, CRC(201cb748) SHA1(f78d384e4e9c5996a278f76fb4d5f28812a27de5) )
ROM_REGION( 0x20000, "cpu1", 0 ) /* Z80 Sound CPU + M5205 Samples */ ROM_REGION( 0x20000, "cpu1", 0 ) /* Z80 Sound CPU + M5205 Samples */
ROM_LOAD( "1.ic140", 0x00000, 0x10000, CRC(e3065b1d) SHA1(c4a3a95ba7f43cdf1b0c574f41de06d007ad2bd8) ) 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( "13.ic120", 0x80000, 0x40000, CRC(89213a8c) SHA1(8524d5c14669d9b03f1fe050c4318d4111bc8ef7) )
ROM_LOAD( "14.ic121", 0xc0000, 0x40000, CRC(468cbf5b) SHA1(60fbc2771e40f8de51a51891b8ddcc14e2b1e52c) ) ROM_LOAD( "14.ic121", 0xc0000, 0x40000, CRC(468cbf5b) SHA1(60fbc2771e40f8de51a51891b8ddcc14e2b1e52c) )
ROM_REGION( 0x020000, "user1", 0 ) /* lookup tables for the sprites */ ROM_REGION16_BE( 0x020000, "sprlookuprom", 0 ) /* lookup tables for the sprites */
ROM_LOAD( "10.ic104", 0x00000, 0x8000, CRC(b6fe4e57) SHA1(6b62936ff9d0f39fd02c3db488d53bc035c2272d) ) // sldh ROM_LOAD16_BYTE( "10.ic104", 0x00000, 0x8000, CRC(b6fe4e57) SHA1(6b62936ff9d0f39fd02c3db488d53bc035c2272d) ) // sldh
ROM_LOAD( "9.ic103", 0x10000, 0x8000, CRC(5479ed35) SHA1(ca26289318352901841fcdf26d9b43e797ac39b6) ) // sldh ROM_LOAD16_BYTE( "9.ic103", 0x00001, 0x8000, CRC(5479ed35) SHA1(ca26289318352901841fcdf26d9b43e797ac39b6) ) // sldh
ROM_REGION( 0x20000, "cpu1", 0 ) /* Z80 Sound CPU + M5205 Samples */ ROM_REGION( 0x20000, "cpu1", 0 ) /* Z80 Sound CPU + M5205 Samples */
ROM_LOAD( "1.ic140", 0x00000, 0x10000, CRC(e3065b1d) SHA1(c4a3a95ba7f43cdf1b0c574f41de06d007ad2bd8) ) 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( "ic35", 0x100000, 0x80000, CRC(eba8e1a3) SHA1(976ef30437df9aba6fa6d5cd11728476f34eb05b) )
ROM_LOAD( "ic40", 0x180000, 0x80000, CRC(5ef5aa7e) SHA1(8d4b0f2348c536c6781c8ba25722301673aca289) ) 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( "ic19", 0x00000, 0x10000, CRC(db24eeaa) SHA1(300dd1ce81dd258b265bc3a64b8542ed152ed2cf) )
ROM_LOAD16_BYTE( "ic13", 0x00001, 0x10000, CRC(97025bf4) SHA1(0519f0c94f3d417bf8ff0124a3a137035a4013dc) ) ROM_LOAD16_BYTE( "ic13", 0x00001, 0x10000, CRC(97025bf4) SHA1(0519f0c94f3d417bf8ff0124a3a137035a4013dc) )
/* 20000-23fff empty space, filled in vh_startup */ /* 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( "ic35", 0x100000, 0x80000, CRC(eba8e1a3) SHA1(976ef30437df9aba6fa6d5cd11728476f34eb05b) )
ROM_LOAD( "ic40", 0x180000, 0x80000, CRC(5ef5aa7e) SHA1(8d4b0f2348c536c6781c8ba25722301673aca289) ) 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( "ic19", 0x00000, 0x10000, CRC(db24eeaa) SHA1(300dd1ce81dd258b265bc3a64b8542ed152ed2cf) )
ROM_LOAD16_BYTE( "ic13", 0x00001, 0x10000, CRC(97025bf4) SHA1(0519f0c94f3d417bf8ff0124a3a137035a4013dc) ) ROM_LOAD16_BYTE( "ic13", 0x00001, 0x10000, CRC(97025bf4) SHA1(0519f0c94f3d417bf8ff0124a3a137035a4013dc) )
/* 20000-23fff empty space, filled in vh_startup */ /* 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( "ic35", 0x100000, 0x80000, CRC(eba8e1a3) SHA1(976ef30437df9aba6fa6d5cd11728476f34eb05b) )
ROM_LOAD( "ic40", 0x180000, 0x80000, CRC(5ef5aa7e) SHA1(8d4b0f2348c536c6781c8ba25722301673aca289) ) 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( "ic19", 0x00000, 0x10000, CRC(db24eeaa) SHA1(300dd1ce81dd258b265bc3a64b8542ed152ed2cf) )
ROM_LOAD16_BYTE( "ic13", 0x00001, 0x10000, CRC(97025bf4) SHA1(0519f0c94f3d417bf8ff0124a3a137035a4013dc) ) ROM_LOAD16_BYTE( "ic13", 0x00001, 0x10000, CRC(97025bf4) SHA1(0519f0c94f3d417bf8ff0124a3a137035a4013dc) )
/* 20000-23fff empty space, filled in vh_startup */ /* 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_LOAD( "it-19-02", 0x000000, 0x80000, CRC(4f57f8ba) SHA1(aaad548e9a7490dfd48a975135716225f416b6f6) )
ROM_REGION( 0x100000, "spritegfx", 0 ) ROM_REGION( 0x100000, "spritegfx", 0 )
ROM_LOAD( "it-19-04", 0x000000, 0x80000, CRC(3b329c1f) SHA1(279cb32d69ce1e71f42cfad93d395794a3e92bc6) ) ROM_LOAD16_WORD_SWAP( "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-05", 0x080000, 0x80000, CRC(02b525af) SHA1(07f23d15938dfbdc4f0977ba1463a06090569026) )
ROM_REGION( 0x080000, "gfx4", 0 ) ROM_REGION( 0x080000, "gfx4", 0 )
ROM_LOAD( "g27", 0x000000, 0x40000, CRC(4d89cbc8) SHA1(93f248f3dc1a15c32d14a147b37d5d660d0e4337) ) ROM_LOAD16_WORD_SWAP( "g27", 0x000000, 0x40000, CRC(4d89cbc8) SHA1(93f248f3dc1a15c32d14a147b37d5d660d0e4337) )
ROM_LOAD( "g26", 0x040000, 0x40000, CRC(8072c1d2) SHA1(c14634f5f2686cf616f415d9ea4a0c6490054beb) ) ROM_LOAD16_WORD_SWAP( "g26", 0x040000, 0x40000, CRC(8072c1d2) SHA1(c14634f5f2686cf616f415d9ea4a0c6490054beb) )
ROM_REGION( 0x40000, "ymsnd.deltat", 0 ) /* sound samples */ ROM_REGION( 0x40000, "ymsnd.deltat", 0 ) /* sound samples */
ROM_LOAD( "it-19-01", 0x00000, 0x40000, CRC(6d42723d) SHA1(57c59234e9925430a4c687733682efed06d7eed1) ) 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_LOAD( "it-19-02", 0x000000, 0x80000, CRC(4f57f8ba) SHA1(aaad548e9a7490dfd48a975135716225f416b6f6) )
ROM_REGION( 0x100000, "spritegfx", 0 ) ROM_REGION( 0x100000, "spritegfx", 0 )
ROM_LOAD( "it-19-04", 0x000000, 0x80000, CRC(3b329c1f) SHA1(279cb32d69ce1e71f42cfad93d395794a3e92bc6) ) ROM_LOAD16_WORD_SWAP( "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-05", 0x080000, 0x80000, CRC(02b525af) SHA1(07f23d15938dfbdc4f0977ba1463a06090569026) )
ROM_REGION( 0x080000, "gfx4", 0 ) ROM_REGION( 0x080000, "gfx4", 0 )
ROM_LOAD( "g27", 0x000000, 0x40000, CRC(4d89cbc8) SHA1(93f248f3dc1a15c32d14a147b37d5d660d0e4337) ) ROM_LOAD16_WORD_SWAP( "g27", 0x000000, 0x40000, CRC(4d89cbc8) SHA1(93f248f3dc1a15c32d14a147b37d5d660d0e4337) )
ROM_LOAD( "g26", 0x040000, 0x40000, CRC(8072c1d2) SHA1(c14634f5f2686cf616f415d9ea4a0c6490054beb) ) ROM_LOAD16_WORD_SWAP( "g26", 0x040000, 0x40000, CRC(8072c1d2) SHA1(c14634f5f2686cf616f415d9ea4a0c6490054beb) )
ROM_REGION( 0x40000, "ymsnd.deltat", 0 ) /* sound samples */ ROM_REGION( 0x40000, "ymsnd.deltat", 0 ) /* sound samples */
ROM_LOAD( "it-19-01", 0x00000, 0x40000, CRC(6d42723d) SHA1(57c59234e9925430a4c687733682efed06d7eed1) ) 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_LOAD( "it-19-02", 0x000000, 0x80000, CRC(4f57f8ba) SHA1(aaad548e9a7490dfd48a975135716225f416b6f6) )
ROM_REGION( 0x100000, "spritegfx", 0 ) ROM_REGION( 0x100000, "spritegfx", 0 )
ROM_LOAD( "it-19-04", 0x000000, 0x80000, CRC(3b329c1f) SHA1(279cb32d69ce1e71f42cfad93d395794a3e92bc6) ) ROM_LOAD16_WORD_SWAP( "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-05", 0x080000, 0x80000, CRC(02b525af) SHA1(07f23d15938dfbdc4f0977ba1463a06090569026) )
ROM_REGION( 0x080000, "gfx4", 0 ) ROM_REGION( 0x080000, "gfx4", 0 )
ROM_LOAD( "g27", 0x000000, 0x40000, CRC(4d89cbc8) SHA1(93f248f3dc1a15c32d14a147b37d5d660d0e4337) ) ROM_LOAD16_WORD_SWAP( "g27", 0x000000, 0x40000, CRC(4d89cbc8) SHA1(93f248f3dc1a15c32d14a147b37d5d660d0e4337) )
ROM_LOAD( "g26", 0x040000, 0x40000, CRC(8072c1d2) SHA1(c14634f5f2686cf616f415d9ea4a0c6490054beb) ) ROM_LOAD16_WORD_SWAP( "g26", 0x040000, 0x40000, CRC(8072c1d2) SHA1(c14634f5f2686cf616f415d9ea4a0c6490054beb) )
ROM_REGION( 0x40000, "ymsnd.deltat", 0 ) /* sound samples */ ROM_REGION( 0x40000, "ymsnd.deltat", 0 ) /* sound samples */
ROM_LOAD( "it-19-01", 0x00000, 0x40000, CRC(6d42723d) SHA1(57c59234e9925430a4c687733682efed06d7eed1) ) ROM_LOAD( "it-19-01", 0x00000, 0x40000, CRC(6d42723d) SHA1(57c59234e9925430a4c687733682efed06d7eed1) )

View File

@ -11,36 +11,33 @@ class aerofgt_state : public driver_device
{ {
public: public:
aerofgt_state(const machine_config &mconfig, device_type type, const char *tag) aerofgt_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag), : driver_device(mconfig, type, tag)
m_bg1videoram(*this, "bg1videoram"), , m_vram(*this, "vram.%u", 0)
m_bg2videoram(*this, "bg2videoram"), , m_rasterram(*this, "rasterram")
m_rasterram(*this, "rasterram"), , m_bitmapram(*this, "bitmapram")
m_bitmapram(*this, "bitmapram"), , m_sprlookupram(*this, "sprlookupram%u", 1)
m_spriteram1(*this, "spriteram1"), , m_spriteram(*this, "spriteram")
m_spriteram2(*this, "spriteram2"), , m_tx_tilemap_ram(*this, "tx_tilemap_ram")
m_spriteram3(*this, "spriteram3"), , m_maincpu(*this, "maincpu")
m_tx_tilemap_ram(*this, "tx_tilemap_ram"), , m_audiocpu(*this, "audiocpu")
m_maincpu(*this, "maincpu"), , m_oki(*this, "oki")
m_audiocpu(*this, "audiocpu"), , m_upd7759(*this, "upd")
m_oki(*this, "oki"), , m_gfxdecode(*this, "gfxdecode")
m_upd7759(*this, "upd"), , m_palette(*this, "palette")
m_gfxdecode(*this, "gfxdecode"), , m_spr(*this, "vsystem_spr")
m_palette(*this, "palette"), , m_spr_old(*this, "vsystem_spr_old%u", 1)
m_spr(*this, "vsystem_spr"), , m_soundlatch(*this, "soundlatch")
m_spr_old(*this, "vsystem_spr_old"), , m_sprlookuprom(*this, "sprlookuprom")
m_spr_old2(*this, "vsystem_spr_ol2"), , m_soundbank(*this, "soundbank")
m_soundlatch(*this, "soundlatch"), , m_okibank(*this, "okibank")
m_soundbank(*this, "soundbank"), { }
m_okibank(*this, "okibank") { }
/* memory pointers */ /* memory pointers */
required_shared_ptr<uint16_t> m_bg1videoram; optional_shared_ptr_array<uint16_t, 2> m_vram;
optional_shared_ptr<uint16_t> m_bg2videoram;
optional_shared_ptr<uint16_t> m_rasterram; optional_shared_ptr<uint16_t> m_rasterram;
optional_shared_ptr<uint16_t> m_bitmapram; optional_shared_ptr<uint16_t> m_bitmapram;
optional_shared_ptr<uint16_t> m_spriteram1; optional_shared_ptr_array<uint16_t, 2> m_sprlookupram;
optional_shared_ptr<uint16_t> m_spriteram2; required_shared_ptr<uint16_t> m_spriteram;
required_shared_ptr<uint16_t> m_spriteram3;
optional_shared_ptr<uint16_t> m_tx_tilemap_ram; optional_shared_ptr<uint16_t> m_tx_tilemap_ram;
/* devices referenced above */ /* devices referenced above */
@ -51,22 +48,19 @@ public:
required_device<gfxdecode_device> m_gfxdecode; required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette; required_device<palette_device> m_palette;
optional_device<vsystem_spr_device> m_spr; // only the aerofgt parent uses this chip 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_array<vsystem_spr2_device, 2> m_spr_old; // every other (non-bootleg) uses this or a pair of them..
optional_device<vsystem_spr2_device> m_spr_old2; // or a pair of them..
optional_device<generic_latch_8_device> m_soundlatch; optional_device<generic_latch_8_device> m_soundlatch;
optional_region_ptr<uint16_t> m_sprlookuprom;
optional_memory_bank m_soundbank; optional_memory_bank m_soundbank;
optional_memory_bank m_okibank; optional_memory_bank m_okibank;
/* video-related */ /* video-related */
tilemap_t *m_bg1_tilemap; tilemap_t *m_tilemap[2];
tilemap_t *m_bg2_tilemap;
uint8_t m_gfxbank[8]; uint8_t m_gfxbank[8];
uint16_t m_bank[4]; uint16_t m_bank[4];
uint16_t m_bg1scrollx; uint16_t m_scrollx[2];
uint16_t m_bg1scrolly; uint16_t m_scrolly[2];
uint16_t m_bg2scrollx;
uint16_t m_bg2scrolly;
bool m_flip_screen; bool m_flip_screen;
uint16_t m_wbbc97_bitmap_enable; uint16_t m_wbbc97_bitmap_enable;
int m_charpalettebank; int m_charpalettebank;
@ -77,6 +71,7 @@ public:
uint32_t aerofgt_old_tile_callback( uint32_t code ); uint32_t aerofgt_old_tile_callback( uint32_t code );
uint32_t aerofgt_ol2_tile_callback( uint32_t code ); uint32_t aerofgt_ol2_tile_callback( uint32_t code );
uint32_t spinbrk_tile_callback( uint32_t code );
/* handlers */ /* handlers */
DECLARE_WRITE8_MEMBER(karatblzbl_soundlatch_w); DECLARE_WRITE8_MEMBER(karatblzbl_soundlatch_w);
@ -84,8 +79,7 @@ public:
DECLARE_WRITE8_MEMBER(aerofgt_sh_bankswitch_w); DECLARE_WRITE8_MEMBER(aerofgt_sh_bankswitch_w);
DECLARE_WRITE8_MEMBER(spinlbrk_sh_bankswitch_w); DECLARE_WRITE8_MEMBER(spinlbrk_sh_bankswitch_w);
DECLARE_WRITE8_MEMBER(aerfboot_okim6295_banking_w); DECLARE_WRITE8_MEMBER(aerfboot_okim6295_banking_w);
DECLARE_WRITE16_MEMBER(aerofgt_bg1videoram_w); template<int Layer> DECLARE_WRITE16_MEMBER(vram_w);
DECLARE_WRITE16_MEMBER(aerofgt_bg2videoram_w);
DECLARE_WRITE8_MEMBER(pspikes_gfxbank_w); DECLARE_WRITE8_MEMBER(pspikes_gfxbank_w);
DECLARE_WRITE16_MEMBER(pspikesb_gfxbank_w); DECLARE_WRITE16_MEMBER(pspikesb_gfxbank_w);
DECLARE_WRITE16_MEMBER(spikes91_lookup_w); DECLARE_WRITE16_MEMBER(spikes91_lookup_w);
@ -94,10 +88,8 @@ public:
DECLARE_WRITE8_MEMBER(kickball_gfxbank_w); DECLARE_WRITE8_MEMBER(kickball_gfxbank_w);
DECLARE_WRITE16_MEMBER(turbofrc_gfxbank_w); DECLARE_WRITE16_MEMBER(turbofrc_gfxbank_w);
DECLARE_WRITE16_MEMBER(aerofgt_gfxbank_w); DECLARE_WRITE16_MEMBER(aerofgt_gfxbank_w);
DECLARE_WRITE16_MEMBER(aerofgt_bg1scrollx_w); template<int Layer> DECLARE_WRITE16_MEMBER(scrollx_w);
DECLARE_WRITE16_MEMBER(aerofgt_bg1scrolly_w); template<int Layer> DECLARE_WRITE16_MEMBER(scrolly_w);
DECLARE_WRITE16_MEMBER(aerofgt_bg2scrollx_w);
DECLARE_WRITE16_MEMBER(aerofgt_bg2scrolly_w);
DECLARE_WRITE8_MEMBER(pspikes_palette_bank_w); DECLARE_WRITE8_MEMBER(pspikes_palette_bank_w);
DECLARE_WRITE8_MEMBER(spinlbrk_flip_screen_w); DECLARE_WRITE8_MEMBER(spinlbrk_flip_screen_w);
DECLARE_WRITE8_MEMBER(turbofrc_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_write_port_0_w);
DECLARE_WRITE8_MEMBER(karatblzbl_d7759_reset_w); DECLARE_WRITE8_MEMBER(karatblzbl_d7759_reset_w);
TILE_GET_INFO_MEMBER(get_pspikes_tile_info); TILE_GET_INFO_MEMBER(get_pspikes_tile_info);
TILE_GET_INFO_MEMBER(karatblz_bg1_tile_info); template<int Layer> TILE_GET_INFO_MEMBER(karatblz_tile_info);
TILE_GET_INFO_MEMBER(karatblz_bg2_tile_info); template<int Layer> TILE_GET_INFO_MEMBER(spinlbrk_tile_info);
TILE_GET_INFO_MEMBER(spinlbrk_bg1_tile_info); template<int Layer> TILE_GET_INFO_MEMBER(get_tile_info);
TILE_GET_INFO_MEMBER(get_bg1_tile_info);
TILE_GET_INFO_MEMBER(get_bg2_tile_info);
DECLARE_MACHINE_START(aerofgt); DECLARE_MACHINE_START(aerofgt);
DECLARE_MACHINE_START(spinlbrk); DECLARE_MACHINE_START(spinlbrk);
DECLARE_MACHINE_RESET(aerofgt); 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_aerfboo2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
uint32_t screen_update_wbbc97(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); uint32_t screen_update_wbbc97(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
void aerofgt_register_state_globals( ); 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 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 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 ); void spikes91_draw_sprites( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect );

View File

@ -12,7 +12,7 @@
TILE_GET_INFO_MEMBER(aerofgt_state::get_pspikes_tile_info) 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; int bank = (code & 0x1000) >> 12;
SET_TILE_INFO_MEMBER(0, SET_TILE_INFO_MEMBER(0,
(code & 0x0fff) + (m_gfxbank[bank] << 12), (code & 0x0fff) + (m_gfxbank[bank] << 12),
@ -20,49 +20,33 @@ TILE_GET_INFO_MEMBER(aerofgt_state::get_pspikes_tile_info)
0); 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 */ /* 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]; uint16_t code = m_vram[Layer][tile_index];
SET_TILE_INFO_MEMBER(1, SET_TILE_INFO_MEMBER(Layer,
(code & 0x1fff) + (m_gfxbank[1] << 13), (code & 0x1fff) + (m_gfxbank[Layer] << 13),
(code & 0xe000) >> 13, (code & 0xe000) >> 13,
0); 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]; uint16_t code = m_vram[Layer][tile_index];
SET_TILE_INFO_MEMBER(0, SET_TILE_INFO_MEMBER(Layer,
(code & 0x0fff) + (m_gfxbank[0] << 12), (code & 0x0fff) + (m_gfxbank[Layer] << 12),
(code & 0xf000) >> 12, (code & 0xf000) >> 12,
0); 0);
} }
TILE_GET_INFO_MEMBER(aerofgt_state::get_bg1_tile_info) template<int Layer>
TILE_GET_INFO_MEMBER(aerofgt_state::get_tile_info)
{ {
uint16_t code = m_bg1videoram[tile_index]; uint16_t code = m_vram[Layer][tile_index];
int bank = (code & 0x1800) >> 11; int bank = (Layer << 2) + (code & 0x1800) >> 11;
SET_TILE_INFO_MEMBER(0, SET_TILE_INFO_MEMBER(Layer,
(code & 0x07ff) + (m_gfxbank[bank] << 11),
(code & 0xe000) >> 13,
0);
}
TILE_GET_INFO_MEMBER(aerofgt_state::get_bg2_tile_info)
{
uint16_t code = m_bg2videoram[tile_index];
int bank = 4 + ((code & 0x1800) >> 11);
SET_TILE_INFO_MEMBER(1,
(code & 0x07ff) + (m_gfxbank[bank] << 11), (code & 0x07ff) + (m_gfxbank[bank] << 11),
(code & 0xe000) >> 13, (code & 0xe000) >> 13,
0); 0);
@ -76,15 +60,12 @@ TILE_GET_INFO_MEMBER(aerofgt_state::get_bg2_tile_info)
***************************************************************************/ ***************************************************************************/
void aerofgt_state::aerofgt_register_state_globals( ) void aerofgt_state::aerofgt_register_state_globals( )
{ {
save_item(NAME(m_gfxbank)); save_item(NAME(m_gfxbank));
save_item(NAME(m_bank)); save_item(NAME(m_bank));
save_item(NAME(m_bg1scrollx)); save_item(NAME(m_scrollx));
save_item(NAME(m_bg1scrolly)); save_item(NAME(m_scrolly));
save_item(NAME(m_bg2scrollx));
save_item(NAME(m_bg2scrolly));
save_item(NAME(m_flip_screen)); save_item(NAME(m_flip_screen));
save_item(NAME(m_charpalettebank)); save_item(NAME(m_charpalettebank));
save_item(NAME(m_spritepalettebank)); save_item(NAME(m_spritepalettebank));
@ -92,7 +73,7 @@ void aerofgt_state::aerofgt_register_state_globals( )
VIDEO_START_MEMBER(aerofgt_state,pspikes) 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 */ /* no bg2 in this game */
m_sprite_gfx = 1; m_sprite_gfx = 1;
@ -101,13 +82,12 @@ VIDEO_START_MEMBER(aerofgt_state,pspikes)
save_item(NAME(m_spikes91_lookup)); save_item(NAME(m_spikes91_lookup));
} }
VIDEO_START_MEMBER(aerofgt_state,karatblz) 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_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_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[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_spritepalettebank = 0;
m_sprite_gfx = 2; m_sprite_gfx = 2;
@ -116,28 +96,25 @@ VIDEO_START_MEMBER(aerofgt_state,karatblz)
VIDEO_START_MEMBER(aerofgt_state,spinlbrk) 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_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_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[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_spritepalettebank = 0;
m_sprite_gfx = 2; m_sprite_gfx = 2;
/* sprite maps are hardcoded in this game */ /* 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(); aerofgt_register_state_globals();
} }
VIDEO_START_MEMBER(aerofgt_state,turbofrc) 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_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_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[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_spritepalettebank = 0;
m_sprite_gfx = 2; m_sprite_gfx = 2;
@ -149,23 +126,26 @@ VIDEO_START_MEMBER(aerofgt_state,turbofrc)
/* new hw type */ /* new hw type */
uint32_t aerofgt_state::aerofgt_tile_callback( uint32_t code ) uint32_t aerofgt_state::aerofgt_tile_callback( uint32_t code )
{ {
return m_spriteram1[code&0x7fff]; return m_sprlookupram[0][code&0x7fff];
} }
/* old hw type */ /* old hw type */
uint32_t aerofgt_state::aerofgt_old_tile_callback( uint32_t code ) 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 ) 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) void aerofgt_state::setbank( int layer, int num, int bank )
{
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 )
{ {
if (m_gfxbank[num] != bank) if (m_gfxbank[num] != bank)
{ {
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) WRITE8_MEMBER(aerofgt_state::pspikes_gfxbank_w)
{ {
setbank(m_bg1_tilemap, 0, (data & 0xf0) >> 4); setbank(0, 0, (data & 0xf0) >> 4);
setbank(m_bg1_tilemap, 1, data & 0x0f); setbank(0, 1, data & 0x0f);
} }
WRITE8_MEMBER(aerofgt_state::karatblz_gfxbank_w) WRITE8_MEMBER(aerofgt_state::karatblz_gfxbank_w)
{ {
setbank(m_bg1_tilemap, 0, (data & 0x01)); setbank(0, 0, (data & 0x01));
setbank(m_bg2_tilemap, 1, (data & 0x08) >> 3); setbank(1, 1, (data & 0x08) >> 3);
} }
WRITE8_MEMBER(aerofgt_state::spinlbrk_gfxbank_w) WRITE8_MEMBER(aerofgt_state::spinlbrk_gfxbank_w)
{ {
setbank(m_bg1_tilemap, 0, (data & 0x07)); setbank(0, 0, (data & 0x07));
setbank(m_bg2_tilemap, 1, (data & 0x38) >> 3); setbank(1, 1, (data & 0x38) >> 3);
} }
WRITE16_MEMBER(aerofgt_state::turbofrc_gfxbank_w) WRITE16_MEMBER(aerofgt_state::turbofrc_gfxbank_w)
{ {
tilemap_t *tmap = (offset == 0) ? m_bg1_tilemap : m_bg2_tilemap;
data = COMBINE_DATA(&m_bank[offset]); data = COMBINE_DATA(&m_bank[offset]);
setbank(tmap, 4 * offset + 0, (data >> 0) & 0x0f); setbank(offset, 4 * offset + 0, (data >> 0) & 0x0f);
setbank(tmap, 4 * offset + 1, (data >> 4) & 0x0f); setbank(offset, 4 * offset + 1, (data >> 4) & 0x0f);
setbank(tmap, 4 * offset + 2, (data >> 8) & 0x0f); setbank(offset, 4 * offset + 2, (data >> 8) & 0x0f);
setbank(tmap, 4 * offset + 3, (data >> 12) & 0x0f); setbank(offset, 4 * offset + 3, (data >> 12) & 0x0f);
} }
WRITE16_MEMBER(aerofgt_state::aerofgt_gfxbank_w) WRITE16_MEMBER(aerofgt_state::aerofgt_gfxbank_w)
{ {
tilemap_t *tmap = (offset < 2) ? m_bg1_tilemap : m_bg2_tilemap;
data = COMBINE_DATA(&m_bank[offset]); data = COMBINE_DATA(&m_bank[offset]);
setbank(tmap, 2 * offset + 0, (data >> 8) & 0xff); setbank(offset >> 1, 2 * offset + 0, (data >> 8) & 0xff);
setbank(tmap, 2 * offset + 1, (data >> 0) & 0xff); setbank(offset >> 1, 2 * offset + 1, (data >> 0) & 0xff);
} }
WRITE8_MEMBER(aerofgt_state::kickball_gfxbank_w) WRITE8_MEMBER(aerofgt_state::kickball_gfxbank_w)
{ {
// I strongly doubt this logic is correct // I strongly doubt this logic is correct
setbank(m_bg1_tilemap, 0, (data & 0x0f)&~0x01); setbank(0, 0, (data & 0x0f)&~0x01);
setbank(m_bg1_tilemap, 1, (data & 0x0f)); setbank(0, 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);
} }
WRITE8_MEMBER(aerofgt_state::pspikes_palette_bank_w) 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) if (m_charpalettebank != (data & 0x1c) >> 2)
{ {
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_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) WRITE8_MEMBER(aerofgt_state::spinlbrk_flip_screen_w)
{ {
m_flip_screen = BIT(data, 7); 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);
m_bg2_tilemap->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) WRITE8_MEMBER(aerofgt_state::turbofrc_flip_screen_w)
{ {
m_flip_screen = BIT(data, 7); 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);
m_bg2_tilemap->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 = ? // bit 6 = ?
} }
@ -304,39 +247,39 @@ uint32_t aerofgt_state::screen_update_pspikes(screen_device &screen, bitmap_ind1
{ {
int i, scrolly; int i, scrolly;
m_bg1_tilemap->set_scroll_rows(256); m_tilemap[0]->set_scroll_rows(256);
scrolly = m_bg1scrolly; scrolly = m_scrolly[0];
for (i = 0; i < 256; i++) for (i = 0; i < 256; i++)
m_bg1_tilemap->set_scrollx((i + scrolly) & 0xff, m_rasterram[i]); m_tilemap[0]->set_scrollx((i + scrolly) & 0xff, m_rasterram[i]);
m_bg1_tilemap->set_scrolly(0, scrolly); m_tilemap[0]->set_scrolly(0, scrolly);
screen.priority().fill(0, cliprect); 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_old->turbofrc_draw_sprites(m_spriteram3,m_spriteram3.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(), 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(), 0, m_flip_screen);
return 0; return 0;
} }
uint32_t aerofgt_state::screen_update_karatblz(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) 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_tilemap[0]->set_scrollx(0, m_scrollx[0] - 8);
m_bg1_tilemap->set_scrolly(0, m_bg1scrolly); m_tilemap[0]->set_scrolly(0, m_scrolly[0]);
m_bg2_tilemap->set_scrollx(0, m_bg2scrollx - 4); m_tilemap[1]->set_scrollx(0, m_scrollx[1] - 4);
m_bg2_tilemap->set_scrolly(0, m_bg2scrolly); m_tilemap[1]->set_scrolly(0, m_scrolly[1]);
screen.priority().fill(0, cliprect); screen.priority().fill(0, cliprect);
m_bg1_tilemap->draw(screen, bitmap, cliprect, 0, 0); m_tilemap[0]->draw(screen, bitmap, cliprect, 0, 0);
m_bg2_tilemap->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 */ /* 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_old[1]->turbofrc_draw_sprites(m_spriteram+0x200,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_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[0]->turbofrc_draw_sprites(m_spriteram+0x000,m_spriteram.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(), 0, m_flip_screen);
return 0; return 0;
} }
@ -344,25 +287,25 @@ uint32_t aerofgt_state::screen_update_spinlbrk(screen_device &screen, bitmap_ind
{ {
int i, scrolly; int i, scrolly;
m_bg1_tilemap->set_scroll_rows(512); m_tilemap[0]->set_scroll_rows(512);
scrolly = 0; scrolly = 0;
for (i = 0; i < 256; i++) for (i = 0; i < 256; i++)
m_bg1_tilemap->set_scrollx((i + scrolly) & 0x1ff, m_rasterram[i] - 8); m_tilemap[0]->set_scrollx((i + scrolly) & 0x1ff, m_rasterram[i] - 8);
// m_bg1_tilemap->set_scrolly(0, m_bg1scrolly); // m_tilemap[0]->set_scrolly(0, m_scrolly[0]);
m_bg2_tilemap->set_scrollx(0, m_bg2scrollx - 4); m_tilemap[1]->set_scrollx(0, m_scrollx[1] - 4);
// m_bg2_tilemap->set_scrolly(0, m_bg2scrolly); // m_tilemap[1]->set_scrolly(0, m_scrolly[1]);
screen.priority().fill(0, cliprect); screen.priority().fill(0, cliprect);
m_bg1_tilemap->draw(screen, bitmap, cliprect, 0, 0); m_tilemap[0]->draw(screen, bitmap, cliprect, 0, 0);
m_bg2_tilemap->draw(screen, bitmap, cliprect, 0, 1); m_tilemap[1]->draw(screen, bitmap, cliprect, 0, 1);
/* we use the priority buffer so sprites are drawn front to back */ /* 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[0]->turbofrc_draw_sprites(m_spriteram+0x000,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[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_old[1]->turbofrc_draw_sprites(m_spriteram+0x200,m_spriteram.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(), 1, m_flip_screen);
return 0; return 0;
} }
@ -370,47 +313,47 @@ uint32_t aerofgt_state::screen_update_turbofrc(screen_device &screen, bitmap_ind
{ {
int i, scrolly; int i, scrolly;
m_bg1_tilemap->set_scroll_rows(512); m_tilemap[0]->set_scroll_rows(512);
scrolly = m_bg1scrolly + 2; scrolly = m_scrolly[0] + 2;
for (i = 0; i < 256; i++) for (i = 0; i < 256; i++)
// m_bg1_tilemap->set_scrollx((i + scrolly) & 0x1ff, m_rasterram[i] - 11); // m_tilemap[0]->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_tilemap[0]->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_tilemap[0]->set_scrolly(0, scrolly - (m_flip_screen ? 2 : 0));
m_bg2_tilemap->set_scrollx(0, m_bg2scrollx - (m_flip_screen ? 185 : 7)); m_tilemap[1]->set_scrollx(0, m_scrollx[1] - (m_flip_screen ? 185 : 7));
m_bg2_tilemap->set_scrolly(0, m_bg2scrolly + (m_flip_screen ? 0 : 2)); m_tilemap[1]->set_scrolly(0, m_scrolly[1] + (m_flip_screen ? 0 : 2));
screen.priority().fill(0, cliprect); screen.priority().fill(0, cliprect);
m_bg1_tilemap->draw(screen, bitmap, cliprect, 0, 0); m_tilemap[0]->draw(screen, bitmap, cliprect, 0, 0);
m_bg2_tilemap->draw(screen, bitmap, cliprect, 0, 1); m_tilemap[1]->draw(screen, bitmap, cliprect, 0, 1);
/* we use the priority buffer so sprites are drawn front to back */ /* 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_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_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(), 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[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->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(), 0, m_flip_screen); //enemy
return 0; return 0;
} }
uint32_t aerofgt_state::screen_update_aerofgt(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) 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_tilemap[0]->set_scrollx(0, m_rasterram[0x0000] - 18);
m_bg1_tilemap->set_scrolly(0, m_bg1scrolly); m_tilemap[0]->set_scrolly(0, m_scrolly[0]);
m_bg2_tilemap->set_scrollx(0, m_rasterram[0x0200] - 20); m_tilemap[1]->set_scrollx(0, m_rasterram[0x0200] - 20);
m_bg2_tilemap->set_scrolly(0, m_bg2scrolly); m_tilemap[1]->set_scrolly(0, m_scrolly[1]);
screen.priority().fill(0, cliprect); 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_spriteram, m_spriteram.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, 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_spriteram, m_spriteram.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, 0x03);
return 0; return 0;
} }
@ -424,10 +367,10 @@ uint32_t aerofgt_state::screen_update_aerofgt(screen_device &screen, bitmap_ind1
// BOOTLEG // BOOTLEG
VIDEO_START_MEMBER(aerofgt_state,wbbc97) 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 */ /* no bg2 in this game */
m_bg1_tilemap->set_transparent_pen(15); m_tilemap[0]->set_transparent_pen(15);
m_sprite_gfx = 1; m_sprite_gfx = 1;
@ -441,8 +384,8 @@ WRITE16_MEMBER(aerofgt_state::pspikesb_gfxbank_w)
{ {
COMBINE_DATA(&m_rasterram[0x200 / 2]); COMBINE_DATA(&m_rasterram[0x200 / 2]);
setbank(m_bg1_tilemap, 0, (data & 0xf000) >> 12); setbank(0, 0, (data & 0xf000) >> 12);
setbank(m_bg1_tilemap, 1, (data & 0x0f00) >> 8); setbank(0, 1, (data & 0x0f00) >> 8);
} }
// BOOTLEG // BOOTLEG
@ -463,7 +406,7 @@ void aerofgt_state::aerfboo2_draw_sprites( screen_device &screen, bitmap_ind16 &
int attr_start, base, first; int attr_start, base, first;
base = chip * 0x0200; base = chip * 0x0200;
// first = 4 * m_spriteram3[0x1fe + base]; // first = 4 * m_spriteram[0x1fe + base];
first = 0; first = 0;
for (attr_start = base + 0x0200 - 4; attr_start >= first + base; attr_start -= 4) 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 // 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 }; // 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; continue;
pri = m_spriteram3[attr_start + 2] & 0x0010; pri = m_spriteram[attr_start + 2] & 0x0010;
if ( chip_disabled_pri && !pri) if ( chip_disabled_pri && !pri)
continue; continue;
if ((!chip_disabled_pri) && (pri >> 4)) if ((!chip_disabled_pri) && (pri >> 4))
continue; continue;
ox = m_spriteram3[attr_start + 1] & 0x01ff; ox = m_spriteram[attr_start + 1] & 0x01ff;
xsize = (m_spriteram3[attr_start + 2] & 0x0700) >> 8; xsize = (m_spriteram[attr_start + 2] & 0x0700) >> 8;
zoomx = (m_spriteram3[attr_start + 1] & 0xf000) >> 12; zoomx = (m_spriteram[attr_start + 1] & 0xf000) >> 12;
oy = m_spriteram3[attr_start + 0] & 0x01ff; oy = m_spriteram[attr_start + 0] & 0x01ff;
ysize = (m_spriteram3[attr_start + 2] & 0x7000) >> 12; ysize = (m_spriteram[attr_start + 2] & 0x7000) >> 12;
zoomy = (m_spriteram3[attr_start + 0] & 0xf000) >> 12; zoomy = (m_spriteram[attr_start + 0] & 0xf000) >> 12;
flipx = m_spriteram3[attr_start + 2] & 0x0800; flipx = m_spriteram[attr_start + 2] & 0x0800;
flipy = m_spriteram3[attr_start + 2] & 0x8000; flipy = m_spriteram[attr_start + 2] & 0x8000;
color = (m_spriteram3[attr_start + 2] & 0x000f) + 16 * m_spritepalettebank; color = (m_spriteram[attr_start + 2] & 0x000f) + 16 * m_spritepalettebank;
map_start = m_spriteram3[attr_start + 3]; map_start = m_spriteram[attr_start + 3];
// aerofgt has this adjustment, but doing it here would break turbo force title screen // aerofgt has this adjustment, but doing it here would break turbo force title screen
// ox += (xsize*zoomx+2)/4; // ox += (xsize*zoomx+2)/4;
@ -519,10 +462,7 @@ void aerofgt_state::aerfboo2_draw_sprites( screen_device &screen, bitmap_ind16 &
else else
sx = ((ox + zoomx * x / 2 + 16) & 0x1ff) - 16; sx = ((ox + zoomx * x / 2 + 16) & 0x1ff) - 16;
if (chip == 0) code = m_sprlookupram[chip][map_start % (m_sprlookupram[chip].bytes()/2)];
code = m_spriteram1[map_start % (m_spriteram1.bytes()/2)];
else
code = m_spriteram2[map_start % (m_spriteram2.bytes()/2)];
m_gfxdecode->gfx(m_sprite_gfx + chip)->prio_zoom_transpen(bitmap,cliprect, m_gfxdecode->gfx(m_sprite_gfx + chip)->prio_zoom_transpen(bitmap,cliprect,
code, code,
@ -547,19 +487,19 @@ void aerofgt_state::pspikesb_draw_sprites( screen_device &screen, bitmap_ind16 &
{ {
int i; 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; int xpos, ypos, color, flipx, flipy, code;
if (m_spriteram3[i + 3 - 4] & 0x8000) if (m_spriteram[i + 3 - 4] & 0x8000)
break; break;
xpos = (m_spriteram3[i + 2] & 0x1ff) - 34; xpos = (m_spriteram[i + 2] & 0x1ff) - 34;
ypos = 256 - (m_spriteram3[i + 3 - 4] & 0x1ff) - 33; ypos = 256 - (m_spriteram[i + 3 - 4] & 0x1ff) - 33;
code = m_spriteram3[i + 0] & 0x1fff; code = m_spriteram[i + 0] & 0x1fff;
flipy = 0; flipy = 0;
flipx = m_spriteram3[i + 1] & 0x0800; flipx = m_spriteram[i + 1] & 0x0800;
color = m_spriteram3[i + 1] & 0x000f; color = m_spriteram[i + 1] & 0x000f;
m_gfxdecode->gfx(m_sprite_gfx)->transpen(bitmap,cliprect, m_gfxdecode->gfx(m_sprite_gfx)->transpen(bitmap,cliprect,
code, 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 ) void aerofgt_state::spikes91_draw_sprites( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect )
{ {
int i; int i;
uint8_t *lookup;
lookup = memregion("user1")->base();
m_spritepalettebank = 1; 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) if (!code)
continue; continue;
xpos = (m_spriteram3[i + 2] & 0x01ff) - 16; xpos = (m_spriteram[i + 2] & 0x01ff) - 16;
ypos = 256 - (m_spriteram3[i + 1] & 0x00ff) - 26; ypos = 256 - (m_spriteram[i + 1] & 0x00ff) - 26;
flipy = 0; flipy = 0;
flipx = m_spriteram3[i + 3] & 0x8000; flipx = m_spriteram[i + 3] & 0x8000;
color = ((m_spriteram3[i + 3] & 0x00f0) >> 4); color = ((m_spriteram[i + 3] & 0x00f0) >> 4);
code |= m_spikes91_lookup * 0x2000; code |= m_spikes91_lookup * 0x2000;
realcode = (lookup[code] << 8) + lookup[0x10000 + code];
m_gfxdecode->gfx(m_sprite_gfx)->transpen(bitmap,cliprect, m_gfxdecode->gfx(m_sprite_gfx)->transpen(bitmap,cliprect,
realcode, m_sprlookuprom[code],
color, color,
flipx,flipy, flipx,flipy,
xpos,ypos,15); xpos,ypos,15);
/* wrap around y */ /* wrap around y */
m_gfxdecode->gfx(m_sprite_gfx)->transpen(bitmap,cliprect, m_gfxdecode->gfx(m_sprite_gfx)->transpen(bitmap,cliprect,
realcode, m_sprlookuprom[code],
color, color,
flipx,flipy, flipx,flipy,
xpos,ypos + 512,15); 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; 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 code;
int ox, oy, sx, sy, zoomx, zoomy, flipx, flipy, color, pri; int ox, oy, sx, sy, zoomx, zoomy, flipx, flipy, color, pri;
ox = m_spriteram3[attr_start + 1] & 0x01ff; ox = m_spriteram[attr_start + 1] & 0x01ff;
oy = m_spriteram3[attr_start + 0] & 0x01ff; oy = m_spriteram[attr_start + 0] & 0x01ff;
flipx = m_spriteram3[attr_start + 2] & 0x0800; flipx = m_spriteram[attr_start + 2] & 0x0800;
flipy = m_spriteram3[attr_start + 2] & 0x8000; flipy = m_spriteram[attr_start + 2] & 0x8000;
color = m_spriteram3[attr_start + 2] & 0x000f; color = m_spriteram[attr_start + 2] & 0x000f;
zoomx = (m_spriteram3[attr_start + 1] & 0xf000) >> 12; zoomx = (m_spriteram[attr_start + 1] & 0xf000) >> 12;
zoomy = (m_spriteram3[attr_start + 0] & 0xf000) >> 12; zoomy = (m_spriteram[attr_start + 0] & 0xf000) >> 12;
pri = m_spriteram3[attr_start + 2] & 0x0010; pri = m_spriteram[attr_start + 2] & 0x0010;
code = m_spriteram3[attr_start + 3] & 0x1fff; code = m_spriteram[attr_start + 3] & 0x1fff;
if (!(m_spriteram3[attr_start + 2] & 0x0040)) if (!(m_spriteram[attr_start + 2] & 0x0040))
code |= 0x2000; code |= 0x2000;
zoomx = 32 + zoomx; 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; 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 code;
int ox, oy, sx, sy, zoomx, zoomy, flipx, flipy, color, pri; int ox, oy, sx, sy, zoomx, zoomy, flipx, flipy, color, pri;
ox = m_spriteram3[attr_start + 1] & 0x01ff; ox = m_spriteram[attr_start + 1] & 0x01ff;
oy = m_spriteram3[attr_start + 0] & 0x01ff; oy = m_spriteram[attr_start + 0] & 0x01ff;
flipx = m_spriteram3[attr_start + 2] & 0x0800; flipx = m_spriteram[attr_start + 2] & 0x0800;
flipy = m_spriteram3[attr_start + 2] & 0x8000; flipy = m_spriteram[attr_start + 2] & 0x8000;
color = m_spriteram3[attr_start + 2] & 0x000f; color = m_spriteram[attr_start + 2] & 0x000f;
zoomx = (m_spriteram3[attr_start + 1] & 0xf000) >> 12; zoomx = (m_spriteram[attr_start + 1] & 0xf000) >> 12;
zoomy = (m_spriteram3[attr_start + 0] & 0xf000) >> 12; zoomy = (m_spriteram[attr_start + 0] & 0xf000) >> 12;
pri = m_spriteram3[attr_start + 2] & 0x0010; pri = m_spriteram[attr_start + 2] & 0x0010;
code = m_spriteram3[attr_start + 3] & 0x1fff; code = m_spriteram[attr_start + 3] & 0x1fff;
if (!(m_spriteram3[attr_start + 2] & 0x0040)) if (!(m_spriteram[attr_start + 2] & 0x0040))
code |= 0x2000; code |= 0x2000;
zoomx = 32 + zoomx; zoomx = 32 + zoomx;
@ -726,13 +662,13 @@ uint32_t aerofgt_state::screen_update_pspikesb(screen_device &screen, bitmap_ind
{ {
int i, scrolly; int i, scrolly;
m_bg1_tilemap->set_scroll_rows(256); m_tilemap[0]->set_scroll_rows(256);
scrolly = m_bg1scrolly; scrolly = m_scrolly[0];
for (i = 0; i < 256; i++) for (i = 0; i < 256; i++)
m_bg1_tilemap->set_scrollx((i + scrolly) & 0xff, m_rasterram[i] + 22); m_tilemap[0]->set_scrollx((i + scrolly) & 0xff, m_rasterram[i] + 22);
m_bg1_tilemap->set_scrolly(0, scrolly); 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); pspikesb_draw_sprites(screen, bitmap, cliprect);
return 0; return 0;
} }
@ -745,14 +681,14 @@ uint32_t aerofgt_state::screen_update_spikes91(screen_device &screen, bitmap_ind
int count; int count;
gfx_element *gfx = m_gfxdecode->gfx(0); gfx_element *gfx = m_gfxdecode->gfx(0);
m_bg1_tilemap->set_scroll_rows(256); m_tilemap[0]->set_scroll_rows(256);
scrolly = m_bg1scrolly; scrolly = m_scrolly[0];
for (i = 0; i < 256; i++) for (i = 0; i < 256; i++)
m_bg1_tilemap->set_scrollx((i + scrolly) & 0xff, m_rasterram[i + 0x01f0 / 2] + 0x96 + 0x16); m_tilemap[0]->set_scrollx((i + scrolly) & 0xff, m_rasterram[i + 0x01f0 / 2] + 0x96 + 0x16);
m_bg1_tilemap->set_scrolly(0, scrolly); 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); spikes91_draw_sprites(screen, bitmap, cliprect);
/* we could use a tilemap, but it's easier to just do it here */ /* 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; int i, scrolly;
m_bg1_tilemap->set_scroll_rows(512); m_tilemap[0]->set_scroll_rows(512);
scrolly = m_bg1scrolly + 2; scrolly = m_scrolly[0] + 2;
for (i = 0; i < 256; i++) for (i = 0; i < 256; i++)
m_bg1_tilemap->set_scrollx((i + scrolly) & 0x1ff, m_rasterram[7] + 174); m_tilemap[0]->set_scrollx((i + scrolly) & 0x1ff, m_rasterram[7] + 174);
m_bg1_tilemap->set_scrolly(0, scrolly); m_tilemap[0]->set_scrolly(0, scrolly);
m_bg2_tilemap->set_scrollx(0, m_bg2scrollx + 172); m_tilemap[1]->set_scrollx(0, m_scrollx[1] + 172);
m_bg2_tilemap->set_scrolly(0, m_bg2scrolly + 2); m_tilemap[1]->set_scrolly(0, m_scrolly[1] + 2);
screen.priority().fill(0, cliprect); screen.priority().fill(0, cliprect);
m_bg1_tilemap->draw(screen, bitmap, cliprect, 0, 0); m_tilemap[0]->draw(screen, bitmap, cliprect, 0, 0);
m_bg2_tilemap->draw(screen, bitmap, cliprect, 0, 1); m_tilemap[1]->draw(screen, bitmap, cliprect, 0, 1);
/* we use the priority buffer so sprites are drawn front to back */ /* we use the priority buffer so sprites are drawn front to back */
aerfboot_draw_sprites(screen, bitmap, cliprect); 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; int i, scrolly;
m_bg1_tilemap->set_scroll_rows(512); m_tilemap[0]->set_scroll_rows(512);
scrolly = m_bg1scrolly + 2; scrolly = m_scrolly[0] + 2;
for (i = 0; i < 256; i++) for (i = 0; i < 256; i++)
// m_bg1_tilemap->set_scrollx((i + scrolly) & 0x1ff, m_rasterram[i] - 11); // m_tilemap[0]->set_scrollx((i + scrolly) & 0x1ff, m_rasterram[i] - 11);
m_bg1_tilemap->set_scrollx((i + scrolly) & 0x1ff, m_rasterram[7] - 11); m_tilemap[0]->set_scrollx((i + scrolly) & 0x1ff, m_rasterram[7] - 11);
m_bg1_tilemap->set_scrolly(0, scrolly); m_tilemap[0]->set_scrolly(0, scrolly);
m_bg2_tilemap->set_scrollx(0, m_bg2scrollx - 7); m_tilemap[1]->set_scrollx(0, m_scrollx[1] - 7);
m_bg2_tilemap->set_scrolly(0, m_bg2scrolly + 2); m_tilemap[1]->set_scrolly(0, m_scrolly[1] + 2);
screen.priority().fill(0, cliprect); screen.priority().fill(0, cliprect);
m_bg1_tilemap->draw(screen, bitmap, cliprect, 0, 0); m_tilemap[0]->draw(screen, bitmap, cliprect, 0, 0);
m_bg2_tilemap->draw(screen, bitmap, cliprect, 0, 1); m_tilemap[1]->draw(screen, bitmap, cliprect, 0, 1);
/* we use the priority buffer so sprites are drawn front to back */ /* we use the priority buffer so sprites are drawn front to back */
aerfboo2_draw_sprites(screen, bitmap, cliprect, 1, -1); //ship 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; int i, scrolly;
m_bg1_tilemap->set_scroll_rows(256); m_tilemap[0]->set_scroll_rows(256);
scrolly = m_bg1scrolly; scrolly = m_scrolly[0];
for (i = 0; i < 256; i++) for (i = 0; i < 256; i++)
m_bg1_tilemap->set_scrollx((i + scrolly) & 0xff, m_rasterram[i]); m_tilemap[0]->set_scrollx((i + scrolly) & 0xff, m_rasterram[i]);
m_bg1_tilemap->set_scrolly(0, scrolly); m_tilemap[0]->set_scrolly(0, scrolly);
screen.priority().fill(0, cliprect); screen.priority().fill(0, cliprect);
if (m_wbbc97_bitmap_enable) if (m_wbbc97_bitmap_enable)
{ {
wbbc97_draw_bitmap(bitmap); wbbc97_draw_bitmap(bitmap);
m_bg1_tilemap->draw(screen, bitmap, cliprect, 0, 0); m_tilemap[0]->draw(screen, bitmap, cliprect, 0, 0);
} }
else 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[0]->turbofrc_draw_sprites(m_spriteram,m_spriteram.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(), 0, m_flip_screen);
return 0; return 0;
} }