summaryrefslogtreecommitdiffstats
path: root/src/mame/drivers/aerofgt.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/aerofgt.cpp')
-rw-r--r--src/mame/drivers/aerofgt.cpp767
1 files changed, 405 insertions, 362 deletions
diff --git a/src/mame/drivers/aerofgt.cpp b/src/mame/drivers/aerofgt.cpp
index 5f81617c310..5179a71fd32 100644
--- a/src/mame/drivers/aerofgt.cpp
+++ b/src/mame/drivers/aerofgt.cpp
@@ -128,368 +128,411 @@ WRITE8_MEMBER(aerofgt_state::karatblzbl_d7759_reset_w)
m_upd7759->reset_w(data & 0x80);
}
-ADDRESS_MAP_START(aerofgt_state::pspikes_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM /* work RAM */
- AM_RANGE(0x200000, 0x203fff) AM_RAM AM_SHARE("spriteram1")
- AM_RANGE(0xff8000, 0xff8fff) AM_RAM_WRITE(aerofgt_bg1videoram_w) AM_SHARE("bg1videoram")
- AM_RANGE(0xffc000, 0xffc3ff) AM_WRITEONLY AM_SHARE("spriteram3")
- AM_RANGE(0xffd000, 0xffdfff) AM_RAM AM_SHARE("rasterram") /* bg1 scroll registers */
- AM_RANGE(0xffe000, 0xffefff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xfff000, 0xfff001) AM_READ_PORT("IN0") AM_WRITE8(pspikes_palette_bank_w, 0x00ff)
- AM_RANGE(0xfff002, 0xfff003) AM_READ_PORT("IN1") AM_WRITE8(pspikes_gfxbank_w, 0x00ff)
- AM_RANGE(0xfff004, 0xfff005) AM_READ_PORT("DSW") AM_WRITE(aerofgt_bg1scrolly_w)
- AM_RANGE(0xfff006, 0xfff007) AM_READ8(pending_command_r, 0x00ff) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0xfff400, 0xfff403) AM_DEVWRITE8("gga", vsystem_gga_device, write, 0x00ff)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(aerofgt_state::pspikesb_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM /* work RAM */
- AM_RANGE(0x200000, 0x203fff) AM_RAM AM_SHARE("spriteram1")
- AM_RANGE(0xc04000, 0xc04001) AM_WRITENOP
- AM_RANGE(0xff8000, 0xff8fff) AM_RAM_WRITE(aerofgt_bg1videoram_w) AM_SHARE("bg1videoram")
- AM_RANGE(0xffc000, 0xffcbff) AM_RAM AM_SHARE("spriteram3")
- AM_RANGE(0xffd000, 0xffdfff) AM_RAM AM_SHARE("rasterram") /* bg1 scroll registers */
- AM_RANGE(0xffd200, 0xffd201) AM_WRITE(pspikesb_gfxbank_w)
- AM_RANGE(0xffe000, 0xffefff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xfff000, 0xfff001) AM_READ_PORT("IN0")
- AM_RANGE(0xfff002, 0xfff003) AM_READ_PORT("IN1")
- AM_RANGE(0xfff004, 0xfff005) AM_READ_PORT("DSW") AM_WRITE(aerofgt_bg1scrolly_w)
- AM_RANGE(0xfff006, 0xfff007) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0xfff008, 0xfff009) AM_WRITE(pspikesb_oki_banking_w)
- AM_RANGE(0xfff400, 0xfff403) AM_WRITENOP // GGA access
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(aerofgt_state::spikes91_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM /* work RAM */
- AM_RANGE(0x200000, 0x203fff) AM_RAM AM_SHARE("spriteram1")
- AM_RANGE(0xc04000, 0xc04001) AM_WRITENOP
- AM_RANGE(0xff8000, 0xff8fff) AM_RAM_WRITE(aerofgt_bg1videoram_w) AM_SHARE("bg1videoram")
-
- AM_RANGE(0xffa000, 0xffbfff) AM_RAM AM_SHARE("tx_tilemap_ram")
-
- AM_RANGE(0xffc000, 0xffcfff) AM_RAM AM_SHARE("spriteram3")
- //AM_RANGE(0xffd200, 0xffd201) AM_WRITE(pspikesb_gfxbank_w)
- AM_RANGE(0xffd000, 0xffdfff) AM_RAM AM_SHARE("rasterram") /* bg1 scroll registers */
- AM_RANGE(0xffe000, 0xffefff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xfff000, 0xfff001) AM_READ_PORT("IN0")
- AM_RANGE(0xfff002, 0xfff003) AM_READ_PORT("IN1") AM_WRITE8(pspikes_gfxbank_w, 0x00ff)
- AM_RANGE(0xfff004, 0xfff005) AM_READ_PORT("DSW") AM_WRITE(aerofgt_bg1scrolly_w)
- AM_RANGE(0xfff006, 0xfff007) AM_NOP
- AM_RANGE(0xfff008, 0xfff009) AM_WRITE(spikes91_lookup_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(aerofgt_state::pspikesc_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM /* work RAM */
- AM_RANGE(0x200000, 0x203fff) AM_RAM AM_SHARE("spriteram1")
- AM_RANGE(0xff8000, 0xff8fff) AM_RAM_WRITE(aerofgt_bg1videoram_w) AM_SHARE("bg1videoram")
- AM_RANGE(0xffc000, 0xffcbff) AM_RAM AM_SHARE("spriteram3")
- AM_RANGE(0xffd000, 0xffdfff) AM_RAM AM_SHARE("rasterram") /* bg1 scroll registers */
- AM_RANGE(0xffe000, 0xffefff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xfff000, 0xfff001) AM_READ_PORT("IN0") AM_WRITE8(pspikes_palette_bank_w, 0x00ff)
- AM_RANGE(0xfff002, 0xfff003) AM_READ_PORT("IN1") AM_WRITE8(pspikes_gfxbank_w, 0x00ff)
- AM_RANGE(0xfff004, 0xfff005) AM_READ_PORT("DSW")
- AM_RANGE(0xfff004, 0xfff005) AM_WRITE(aerofgt_bg1scrolly_w)
- AM_RANGE(0xfff006, 0xfff007) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0xfff400, 0xfff403) AM_WRITENOP // GGA access
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(aerofgt_state::kickball_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x10ffff) AM_RAM /* work RAM */
- AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("spriteram1")
- AM_RANGE(0xff8000, 0xff8fff) AM_RAM_WRITE(aerofgt_bg1videoram_w) AM_SHARE("bg1videoram")
- AM_RANGE(0xffc000, 0xffc3ff) AM_WRITEONLY AM_SHARE("spriteram3")
- AM_RANGE(0xffd000, 0xffdfff) AM_RAM AM_SHARE("rasterram") /* bg1 scroll registers */
- AM_RANGE(0xffe000, 0xffefff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xfff000, 0xfff001) AM_READ_PORT("IN0") AM_WRITE8(pspikes_palette_bank_w, 0x00ff)
- AM_RANGE(0xfff002, 0xfff003) AM_READ_PORT("IN1") AM_WRITE8(kickball_gfxbank_w, 0x00ff)
- AM_RANGE(0xfff004, 0xfff005) AM_READ_PORT("DSW") AM_WRITE(aerofgt_bg1scrolly_w)
- AM_RANGE(0xfff006, 0xfff007) AM_READ8(pending_command_r, 0x00ff) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0xfff400, 0xfff403) AM_WRITENOP // GGA access
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(aerofgt_state::karatblz_map)
- ADDRESS_MAP_GLOBAL_MASK(0xfffff)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x080000, 0x081fff) AM_RAM_WRITE(aerofgt_bg1videoram_w) AM_SHARE("bg1videoram")
- AM_RANGE(0x082000, 0x083fff) AM_RAM_WRITE(aerofgt_bg2videoram_w) AM_SHARE("bg2videoram")
- AM_RANGE(0x0a0000, 0x0affff) AM_RAM AM_SHARE("spriteram1")
- AM_RANGE(0x0b0000, 0x0bffff) AM_RAM AM_SHARE("spriteram2")
- AM_RANGE(0x0c0000, 0x0cffff) AM_RAM /* work RAM */
- AM_RANGE(0x0f8000, 0x0fbfff) AM_RAM /* work RAM */
- AM_RANGE(0x0fc000, 0x0fc7ff) AM_RAM AM_SHARE("spriteram3")
- AM_RANGE(0x0fe000, 0x0fe7ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x0ff000, 0x0ff001) AM_READ_PORT("IN0") AM_WRITE8(spinlbrk_flip_screen_w, 0xff00)
- AM_RANGE(0x0ff002, 0x0ff003) AM_READ_PORT("IN1") AM_WRITE8(karatblz_gfxbank_w, 0xff00)
- AM_RANGE(0x0ff004, 0x0ff005) AM_READ_PORT("IN2")
- AM_RANGE(0x0ff006, 0x0ff007) AM_READ_PORT("IN3") AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x0ff008, 0x0ff009) AM_READ_PORT("DSW") AM_WRITE(aerofgt_bg1scrollx_w)
- AM_RANGE(0x0ff00a, 0x0ff00b) AM_READ8(pending_command_r, 0x00ff)
- AM_RANGE(0x0ff00a, 0x0ff00b) AM_WRITE(aerofgt_bg1scrolly_w)
- AM_RANGE(0x0ff00c, 0x0ff00d) AM_WRITE(aerofgt_bg2scrollx_w)
- AM_RANGE(0x0ff00e, 0x0ff00f) AM_WRITE(aerofgt_bg2scrolly_w)
- AM_RANGE(0x0ff400, 0x0ff403) AM_DEVWRITE8("gga", vsystem_gga_device, write, 0x00ff)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(aerofgt_state::karatblzbl_map)
- ADDRESS_MAP_GLOBAL_MASK(0xfffff)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x080000, 0x081fff) AM_RAM_WRITE(aerofgt_bg1videoram_w) AM_SHARE("bg1videoram")
- AM_RANGE(0x082000, 0x083fff) AM_RAM_WRITE(aerofgt_bg2videoram_w) AM_SHARE("bg2videoram")
- AM_RANGE(0x0a0000, 0x0affff) AM_RAM AM_SHARE("spriteram1")
- AM_RANGE(0x0b0000, 0x0bffff) AM_RAM AM_SHARE("spriteram2")
- AM_RANGE(0x0c0000, 0x0cffff) AM_RAM /* work RAM */
- AM_RANGE(0x0f8000, 0x0fbfff) AM_RAM /* work RAM */
- AM_RANGE(0x0fc000, 0x0fc7ff) AM_RAM AM_SHARE("spriteram3")
- AM_RANGE(0x0fe000, 0x0fe7ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x0ff000, 0x0ff001) AM_READ_PORT("IN0") AM_WRITE8(spinlbrk_flip_screen_w, 0xff00)
- AM_RANGE(0x0ff002, 0x0ff003) AM_READ_PORT("IN1") AM_WRITE8(karatblz_gfxbank_w, 0xff00)
- AM_RANGE(0x0ff004, 0x0ff005) AM_READ_PORT("IN2")
- AM_RANGE(0x0ff006, 0x0ff007) AM_READ_PORT("IN3") AM_WRITE8(karatblzbl_soundlatch_w, 0x00ff)
- AM_RANGE(0x0ff008, 0x0ff009) AM_READ_PORT("DSW") AM_WRITE(aerofgt_bg1scrollx_w)
- AM_RANGE(0x0ff00a, 0x0ff00b) AM_READ8(pending_command_r, 0x00ff)
- AM_RANGE(0x0ff00a, 0x0ff00b) AM_WRITE(aerofgt_bg1scrolly_w)
- AM_RANGE(0x0ff00c, 0x0ff00d) AM_WRITE(aerofgt_bg2scrollx_w)
- AM_RANGE(0x0ff00e, 0x0ff00f) AM_WRITE(aerofgt_bg2scrolly_w)
- AM_RANGE(0x0ff400, 0x0ff403) AM_WRITENOP // GGA access
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(aerofgt_state::spinlbrk_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x080000, 0x080fff) AM_RAM_WRITE(aerofgt_bg1videoram_w) AM_SHARE("bg1videoram")
- AM_RANGE(0x082000, 0x082fff) AM_RAM_WRITE(aerofgt_bg2videoram_w) AM_SHARE("bg2videoram")
- AM_RANGE(0xff8000, 0xffbfff) AM_RAM /* work RAM */
- AM_RANGE(0xffc000, 0xffc7ff) AM_RAM AM_SHARE("spriteram3")
- AM_RANGE(0xffd000, 0xffd1ff) AM_RAM AM_SHARE("rasterram") /* bg1 scroll registers */
- AM_RANGE(0xffe000, 0xffe7ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xfff000, 0xfff001) AM_READ_PORT("IN0") AM_WRITE8(spinlbrk_flip_screen_w, 0xff00)
- AM_RANGE(0xfff000, 0xfff001) AM_WRITE8(spinlbrk_gfxbank_w, 0x00ff)
- AM_RANGE(0xfff002, 0xfff003) AM_READ_PORT("IN1") AM_WRITE(aerofgt_bg2scrollx_w)
- AM_RANGE(0xfff004, 0xfff005) AM_READ_PORT("DSW")
- AM_RANGE(0xfff006, 0xfff007) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
-// AM_RANGE(0xfff008, 0xfff009) - read when analog inputs are enabled
-// AM_RANGE(0xfff00a, 0xfff00b) /
- AM_RANGE(0xfff400, 0xfff403) AM_DEVWRITE8("gga", vsystem_gga_device, write, 0x00ff)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(aerofgt_state::turbofrc_map)
- ADDRESS_MAP_GLOBAL_MASK(0xfffff)
- AM_RANGE(0x000000, 0x0bffff) AM_ROM
- AM_RANGE(0x0c0000, 0x0cffff) AM_RAM /* work RAM */
- AM_RANGE(0x0d0000, 0x0d1fff) AM_RAM_WRITE(aerofgt_bg1videoram_w) AM_SHARE("bg1videoram")
- AM_RANGE(0x0d2000, 0x0d3fff) AM_RAM_WRITE(aerofgt_bg2videoram_w) AM_SHARE("bg2videoram")
- AM_RANGE(0x0e0000, 0x0e3fff) AM_RAM AM_SHARE("spriteram1")
- AM_RANGE(0x0e4000, 0x0e7fff) AM_RAM AM_SHARE("spriteram2")
- AM_RANGE(0x0f8000, 0x0fbfff) AM_RAM /* work RAM */
- AM_RANGE(0x0fc000, 0x0fc7ff) AM_RAM AM_SHARE("spriteram3")
- AM_RANGE(0x0fd000, 0x0fdfff) AM_RAM AM_SHARE("rasterram") /* bg1 scroll registers */
- AM_RANGE(0x0fe000, 0x0fe7ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x0ff000, 0x0ff001) AM_READ_PORT("IN0") AM_WRITE8(turbofrc_flip_screen_w, 0x00ff)
- AM_RANGE(0x0ff002, 0x0ff003) AM_READ_PORT("IN1") AM_WRITE(aerofgt_bg1scrolly_w)
- AM_RANGE(0x0ff004, 0x0ff005) AM_READ_PORT("DSW") AM_WRITE(aerofgt_bg2scrollx_w)
- AM_RANGE(0x0ff006, 0x0ff007) AM_READ8(pending_command_r, 0x00ff)
- AM_RANGE(0x0ff006, 0x0ff007) AM_WRITE(aerofgt_bg2scrolly_w)
- AM_RANGE(0x0ff008, 0x0ff009) AM_READ_PORT("IN2")
- AM_RANGE(0x0ff008, 0x0ff00b) AM_WRITE(turbofrc_gfxbank_w)
- AM_RANGE(0x0ff00c, 0x0ff00d) AM_WRITENOP /* related to bg2 (written together with the scroll registers) */
- AM_RANGE(0x0ff00e, 0x0ff00f) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0xff00)
- AM_RANGE(0x0ff400, 0x0ff403) AM_DEVWRITE8("gga", vsystem_gga_device, write, 0x00ff)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(aerofgt_state::aerofgtb_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x0c0000, 0x0cffff) AM_RAM /* work RAM */
- AM_RANGE(0x0d0000, 0x0d1fff) AM_RAM_WRITE(aerofgt_bg1videoram_w) AM_SHARE("bg1videoram")
- AM_RANGE(0x0d2000, 0x0d3fff) AM_RAM_WRITE(aerofgt_bg2videoram_w) AM_SHARE("bg2videoram")
- AM_RANGE(0x0e0000, 0x0e3fff) AM_RAM AM_SHARE("spriteram1")
- AM_RANGE(0x0e4000, 0x0e7fff) AM_RAM AM_SHARE("spriteram2")
- AM_RANGE(0x0f8000, 0x0fbfff) AM_RAM /* work RAM */
- AM_RANGE(0x0fc000, 0x0fc7ff) AM_RAM AM_SHARE("spriteram3")
- AM_RANGE(0x0fd000, 0x0fd7ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x0fe000, 0x0fe001) AM_READ_PORT("IN0") AM_WRITE8(turbofrc_flip_screen_w, 0x00ff)
- AM_RANGE(0x0fe002, 0x0fe003) AM_READ_PORT("IN1") AM_WRITE(aerofgt_bg1scrolly_w)
- AM_RANGE(0x0fe004, 0x0fe005) AM_READ_PORT("DSW1") AM_WRITE(aerofgt_bg2scrollx_w)
- AM_RANGE(0x0fe006, 0x0fe007) AM_READ8(pending_command_r, 0x00ff)
- AM_RANGE(0x0fe006, 0x0fe007) AM_WRITE(aerofgt_bg2scrolly_w)
- AM_RANGE(0x0fe008, 0x0fe009) AM_READ_PORT("DSW2")
- AM_RANGE(0x0fe008, 0x0fe00b) AM_WRITE(turbofrc_gfxbank_w)
- AM_RANGE(0x0fe00e, 0x0fe00f) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0xff00)
- AM_RANGE(0x0fe400, 0x0fe403) AM_DEVWRITE8("gga", vsystem_gga_device, write, 0x00ff)
- AM_RANGE(0x0ff000, 0x0fffff) AM_RAM AM_SHARE("rasterram") /* used only for the scroll registers */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(aerofgt_state::aerofgt_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x1a0000, 0x1a07ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x1b0000, 0x1b07ff) AM_RAM AM_SHARE("rasterram") /* used only for the scroll registers */
- AM_RANGE(0x1b0800, 0x1b0801) AM_RAM /* tracks watchdog state */
- AM_RANGE(0x1b0ff0, 0x1b0fff) AM_RAM /* stack area during boot */
- AM_RANGE(0x1b2000, 0x1b3fff) AM_RAM_WRITE(aerofgt_bg1videoram_w) AM_SHARE("bg1videoram")
- AM_RANGE(0x1b4000, 0x1b5fff) AM_RAM_WRITE(aerofgt_bg2videoram_w) AM_SHARE("bg2videoram")
- AM_RANGE(0x1c0000, 0x1c7fff) AM_RAM AM_SHARE("spriteram1")
- AM_RANGE(0x1d0000, 0x1d1fff) AM_RAM AM_SHARE("spriteram3")
- AM_RANGE(0xfef000, 0xffefff) AM_RAM /* work RAM */
- AM_RANGE(0xffff80, 0xffff87) AM_WRITE(aerofgt_gfxbank_w)
- AM_RANGE(0xffff88, 0xffff89) AM_WRITE(aerofgt_bg1scrolly_w) /* + something else in the top byte */
- AM_RANGE(0xffff90, 0xffff91) AM_WRITE(aerofgt_bg2scrolly_w) /* + something else in the top byte */
- AM_RANGE(0xffffa0, 0xffffbf) AM_DEVREADWRITE8("io", vs9209_device, read, write, 0x00ff)
- AM_RANGE(0xffffc0, 0xffffc1) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(aerofgt_state::aerfboot_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x0c0000, 0x0cffff) AM_RAM /* work RAM */
- AM_RANGE(0x0d0000, 0x0d1fff) AM_RAM_WRITE(aerofgt_bg1videoram_w) AM_SHARE("bg1videoram")
- AM_RANGE(0x0d2000, 0x0d3fff) AM_RAM_WRITE(aerofgt_bg2videoram_w) AM_SHARE("bg2videoram")
- AM_RANGE(0x0e0000, 0x0e3fff) AM_RAM AM_SHARE("spriteram1")
- AM_RANGE(0x0e4000, 0x0e7fff) AM_RAM AM_SHARE("spriteram2")
- AM_RANGE(0x0f8000, 0x0fbfff) AM_RAM /* work RAM */
- AM_RANGE(0x0fc000, 0x0fc7ff) AM_RAM //AM_SHARE("spriteram3")
- AM_RANGE(0x0fd000, 0x0fd7ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x0fe000, 0x0fe001) AM_READ_PORT("IN0")
- AM_RANGE(0x0fe002, 0x0fe003) AM_READ_PORT("IN1")
- AM_RANGE(0x0fe004, 0x0fe005) AM_READ_PORT("DSW1")
- AM_RANGE(0x0fe008, 0x0fe009) AM_READ_PORT("DSW2")
- AM_RANGE(0x0fe002, 0x0fe003) AM_WRITE(aerofgt_bg1scrolly_w)
- AM_RANGE(0x0fe004, 0x0fe005) AM_WRITE(aerofgt_bg2scrollx_w)
- AM_RANGE(0x0fe006, 0x0fe007) AM_WRITE(aerofgt_bg2scrolly_w)
- AM_RANGE(0x0fe008, 0x0fe00b) AM_WRITE(turbofrc_gfxbank_w)
- AM_RANGE(0x0fe00e, 0x0fe00f) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0xff00)
- AM_RANGE(0x0fe010, 0x0fe011) AM_WRITENOP
- AM_RANGE(0x0fe012, 0x0fe013) AM_WRITENOP // MSB = watchdog?
- AM_RANGE(0x0fe400, 0x0fe403) AM_WRITENOP // GGA access
- AM_RANGE(0x0ff000, 0x0fffff) AM_RAM AM_SHARE("rasterram") /* used only for the scroll registers */
- AM_RANGE(0x100000, 0x107fff) AM_WRITENOP
- AM_RANGE(0x108000, 0x10bfff) AM_RAM AM_SHARE("spriteram3")
- AM_RANGE(0x10c000, 0x117fff) AM_WRITENOP
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(aerofgt_state::aerfboo2_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x0c0000, 0x0cffff) AM_RAM /* work RAM */
- AM_RANGE(0x0d0000, 0x0d1fff) AM_RAM_WRITE(aerofgt_bg1videoram_w) AM_SHARE("bg1videoram")
- AM_RANGE(0x0d2000, 0x0d3fff) AM_RAM_WRITE(aerofgt_bg2videoram_w) AM_SHARE("bg2videoram")
- AM_RANGE(0x0e0000, 0x0e3fff) AM_RAM AM_SHARE("spriteram1")
- AM_RANGE(0x0e4000, 0x0e7fff) AM_RAM AM_SHARE("spriteram2")
- AM_RANGE(0x0f8000, 0x0fbfff) AM_RAM /* work RAM */
- AM_RANGE(0x0fc000, 0x0fc7ff) AM_RAM AM_SHARE("spriteram3")
- AM_RANGE(0x0fd000, 0x0fd7ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x0fe000, 0x0fe001) AM_READ_PORT("IN0")
- AM_RANGE(0x0fe002, 0x0fe003) AM_READ_PORT("IN1")
- AM_RANGE(0x0fe004, 0x0fe005) AM_READ_PORT("DSW1")
- AM_RANGE(0x0fe008, 0x0fe009) AM_READ_PORT("DSW2")
- AM_RANGE(0x0fe002, 0x0fe003) AM_WRITE(aerofgt_bg1scrolly_w)
- AM_RANGE(0x0fe004, 0x0fe005) AM_WRITE(aerofgt_bg2scrollx_w)
- AM_RANGE(0x0fe006, 0x0fe007) AM_WRITE(aerofgt_bg2scrolly_w)
- AM_RANGE(0x0fe008, 0x0fe00b) AM_WRITE(turbofrc_gfxbank_w)
- AM_RANGE(0x0fe006, 0x0fe007) AM_DEVREAD8("oki", okim6295_device, read, 0xff00)
- AM_RANGE(0x0fe00e, 0x0fe00f) AM_DEVWRITE8("oki", okim6295_device, write, 0xff00)
- AM_RANGE(0x0fe01e, 0x0fe01f) AM_WRITE(aerfboo2_okim6295_banking_w)
-// AM_RANGE(0x0fe010, 0x0fe011) AM_WRITENOP
-// AM_RANGE(0x0fe012, 0x0fe013) AM_WRITE(aerfboot_soundlatch_w)
- AM_RANGE(0x0fe400, 0x0fe403) AM_WRITENOP // GGA access
- AM_RANGE(0x0ff000, 0x0fffff) AM_RAM AM_SHARE("rasterram") /* used only for the scroll registers */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(aerofgt_state::wbbc97_map)
- AM_RANGE(0x000000, 0x3fffff) AM_ROM
- AM_RANGE(0x500000, 0x50ffff) AM_RAM /* work RAM */
- AM_RANGE(0x600000, 0x605fff) AM_RAM AM_SHARE("spriteram1")
- AM_RANGE(0xa00000, 0xa3ffff) AM_RAM AM_SHARE("bitmapram")
- AM_RANGE(0xff8000, 0xff8fff) AM_RAM_WRITE(aerofgt_bg1videoram_w) AM_SHARE("bg1videoram")
- AM_RANGE(0xffc000, 0xffc3ff) AM_WRITEONLY AM_SHARE("spriteram3")
- AM_RANGE(0xffd000, 0xffdfff) AM_RAM AM_SHARE("rasterram") /* bg1 scroll registers */
- AM_RANGE(0xffe000, 0xffefff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xfff000, 0xfff001) AM_READ_PORT("IN0") AM_WRITE8(pspikes_palette_bank_w, 0x00ff)
- AM_RANGE(0xfff002, 0xfff003) AM_READ_PORT("IN1") AM_WRITE8(pspikes_gfxbank_w, 0x00ff)
- AM_RANGE(0xfff004, 0xfff005) AM_READ_PORT("DSW") AM_WRITE(aerofgt_bg1scrolly_w)
- AM_RANGE(0xfff006, 0xfff007) AM_READ8(pending_command_r, 0x00ff) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0xfff00e, 0xfff00f) AM_WRITE(wbbc97_bitmap_enable_w)
- AM_RANGE(0xfff400, 0xfff403) AM_WRITENOP // GGA access
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(aerofgt_state::sound_map)
- AM_RANGE(0x0000, 0x77ff) AM_ROM
- AM_RANGE(0x7800, 0x7fff) AM_RAM
- AM_RANGE(0x8000, 0xffff) AM_ROMBANK("soundbank")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(aerofgt_state::spinlbrk_sound_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITE(spinlbrk_sh_bankswitch_w)
- AM_RANGE(0x14, 0x14) AM_DEVREADWRITE("soundlatch", generic_latch_8_device, read, acknowledge_w)
- AM_RANGE(0x18, 0x1b) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(aerofgt_state::turbofrc_sound_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITE(aerofgt_sh_bankswitch_w)
- AM_RANGE(0x14, 0x14) AM_DEVREADWRITE("soundlatch", generic_latch_8_device, read, acknowledge_w)
- AM_RANGE(0x18, 0x1b) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(aerofgt_state::aerofgt_sound_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write)
- AM_RANGE(0x04, 0x04) AM_WRITE(aerofgt_sh_bankswitch_w)
- AM_RANGE(0x08, 0x08) AM_DEVWRITE("soundlatch", generic_latch_8_device, acknowledge_w)
- AM_RANGE(0x0c, 0x0c) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(aerofgt_state::aerfboot_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x9000, 0x9000) AM_WRITE(aerfboot_okim6295_banking_w)
- AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(aerofgt_state::wbbc97_sound_map)
- AM_RANGE(0x0000, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xf7ff) AM_RAM
- AM_RANGE(0xf800, 0xf800) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0xf810, 0xf811) AM_DEVWRITE("ymsnd", ym3812_device, write)
- AM_RANGE(0xfc00, 0xfc00) AM_NOP
- AM_RANGE(0xfc20, 0xfc20) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(aerofgt_state::karatblzbl_sound_map)
- AM_RANGE(0x0000, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xf7ff) AM_RAM
- AM_RANGE(0xf800, 0xf800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) //AM_DEVWRITE("soundlatch2", generic_latch_8_device, write)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(aerofgt_state::karatblzbl_sound_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("ymsnd", ym3812_device, status_port_r, control_port_w)
- AM_RANGE(0x20, 0x20) AM_DEVWRITE("ymsnd", ym3812_device, write_port_w)
- AM_RANGE(0x40, 0x40) AM_WRITE(karatblzbl_d7759_write_port_0_w)
- AM_RANGE(0x80, 0x80) AM_WRITE(karatblzbl_d7759_reset_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(aerofgt_state::kickball_sound_map)
- AM_RANGE(0x0000, 0xefff) AM_ROM
- AM_RANGE(0xf000, 0xf7ff) AM_RAM
- AM_RANGE(0xf800, 0xf800) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(aerofgt_state::kickball_sound_portmap)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("ymsnd", ym3812_device, status_port_r, control_port_w)
- AM_RANGE(0x20, 0x20) AM_DEVWRITE("ymsnd", ym3812_device, write_port_w)
- AM_RANGE(0x40, 0x40) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0xc0, 0xc0) AM_DEVWRITE("soundlatch", generic_latch_8_device, acknowledge_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(aerofgt_state::oki_map) //only for aerfboot for now
- AM_RANGE(0x00000, 0x1ffff) AM_ROM
- AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("okibank")
-ADDRESS_MAP_END
+void aerofgt_state::pspikes_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x10ffff).ram(); /* work RAM */
+ map(0x200000, 0x203fff).ram().share("spriteram1");
+ map(0xff8000, 0xff8fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg1videoram_w)).share("bg1videoram");
+ map(0xffc000, 0xffc3ff).writeonly().share("spriteram3");
+ map(0xffd000, 0xffdfff).ram().share("rasterram"); /* bg1 scroll registers */
+ map(0xffe000, 0xffefff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0xfff000, 0xfff001).portr("IN0");
+ map(0xfff001, 0xfff001).w(this, FUNC(aerofgt_state::pspikes_palette_bank_w));
+ map(0xfff002, 0xfff003).portr("IN1");
+ map(0xfff003, 0xfff003).w(this, FUNC(aerofgt_state::pspikes_gfxbank_w));
+ map(0xfff004, 0xfff005).portr("DSW").w(this, FUNC(aerofgt_state::aerofgt_bg1scrolly_w));
+ map(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);
+}
+
+void aerofgt_state::pspikesb_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x10ffff).ram(); /* work RAM */
+ map(0x200000, 0x203fff).ram().share("spriteram1");
+ map(0xc04000, 0xc04001).nopw();
+ map(0xff8000, 0xff8fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg1videoram_w)).share("bg1videoram");
+ map(0xffc000, 0xffcbff).ram().share("spriteram3");
+ map(0xffd000, 0xffdfff).ram().share("rasterram"); /* bg1 scroll registers */
+ map(0xffd200, 0xffd201).w(this, FUNC(aerofgt_state::pspikesb_gfxbank_w));
+ map(0xffe000, 0xffefff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0xfff000, 0xfff001).portr("IN0");
+ map(0xfff002, 0xfff003).portr("IN1");
+ map(0xfff004, 0xfff005).portr("DSW").w(this, FUNC(aerofgt_state::aerofgt_bg1scrolly_w));
+ map(0xfff007, 0xfff007).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xfff008, 0xfff009).w(this, FUNC(aerofgt_state::pspikesb_oki_banking_w));
+ map(0xfff400, 0xfff403).nopw(); // GGA access
+}
+
+void aerofgt_state::spikes91_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x10ffff).ram(); /* work RAM */
+ map(0x200000, 0x203fff).ram().share("spriteram1");
+ map(0xc04000, 0xc04001).nopw();
+ map(0xff8000, 0xff8fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg1videoram_w)).share("bg1videoram");
+
+ map(0xffa000, 0xffbfff).ram().share("tx_tilemap_ram");
+
+ map(0xffc000, 0xffcfff).ram().share("spriteram3");
+ //map(0xffd200, 0xffd201).w(this, FUNC(aerofgt_state::pspikesb_gfxbank_w));
+ map(0xffd000, 0xffdfff).ram().share("rasterram"); /* bg1 scroll registers */
+ map(0xffe000, 0xffefff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0xfff000, 0xfff001).portr("IN0");
+ map(0xfff002, 0xfff003).portr("IN1");
+ map(0xfff003, 0xfff003).w(this, FUNC(aerofgt_state::pspikes_gfxbank_w));
+ map(0xfff004, 0xfff005).portr("DSW").w(this, FUNC(aerofgt_state::aerofgt_bg1scrolly_w));
+ map(0xfff006, 0xfff007).noprw();
+ map(0xfff008, 0xfff009).w(this, FUNC(aerofgt_state::spikes91_lookup_w));
+}
+
+void aerofgt_state::pspikesc_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x10ffff).ram(); /* work RAM */
+ map(0x200000, 0x203fff).ram().share("spriteram1");
+ map(0xff8000, 0xff8fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg1videoram_w)).share("bg1videoram");
+ map(0xffc000, 0xffcbff).ram().share("spriteram3");
+ map(0xffd000, 0xffdfff).ram().share("rasterram"); /* bg1 scroll registers */
+ map(0xffe000, 0xffefff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0xfff000, 0xfff001).portr("IN0");
+ map(0xfff001, 0xfff001).w(this, FUNC(aerofgt_state::pspikes_palette_bank_w));
+ map(0xfff002, 0xfff003).portr("IN1");
+ map(0xfff003, 0xfff003).w(this, FUNC(aerofgt_state::pspikes_gfxbank_w));
+ map(0xfff004, 0xfff005).portr("DSW");
+ map(0xfff004, 0xfff005).w(this, FUNC(aerofgt_state::aerofgt_bg1scrolly_w));
+ map(0xfff007, 0xfff007).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xfff400, 0xfff403).nopw(); // GGA access
+}
+
+void aerofgt_state::kickball_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x10ffff).ram(); /* work RAM */
+ map(0x200000, 0x20ffff).ram().share("spriteram1");
+ map(0xff8000, 0xff8fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg1videoram_w)).share("bg1videoram");
+ map(0xffc000, 0xffc3ff).writeonly().share("spriteram3");
+ map(0xffd000, 0xffdfff).ram().share("rasterram"); /* bg1 scroll registers */
+ map(0xffe000, 0xffefff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0xfff000, 0xfff001).portr("IN0");
+ map(0xfff001, 0xfff001).w(this, FUNC(aerofgt_state::pspikes_palette_bank_w));
+ map(0xfff002, 0xfff003).portr("IN1");
+ map(0xfff003, 0xfff003).w(this, FUNC(aerofgt_state::kickball_gfxbank_w));
+ map(0xfff004, 0xfff005).portr("DSW").w(this, FUNC(aerofgt_state::aerofgt_bg1scrolly_w));
+ map(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
+}
+
+void aerofgt_state::karatblz_map(address_map &map)
+{
+ map.global_mask(0xfffff);
+ map(0x000000, 0x07ffff).rom();
+ map(0x080000, 0x081fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg1videoram_w)).share("bg1videoram");
+ map(0x082000, 0x083fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg2videoram_w)).share("bg2videoram");
+ map(0x0a0000, 0x0affff).ram().share("spriteram1");
+ map(0x0b0000, 0x0bffff).ram().share("spriteram2");
+ map(0x0c0000, 0x0cffff).ram(); /* work RAM */
+ map(0x0f8000, 0x0fbfff).ram(); /* work RAM */
+ map(0x0fc000, 0x0fc7ff).ram().share("spriteram3");
+ map(0x0fe000, 0x0fe7ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x0ff000, 0x0ff001).portr("IN0");
+ map(0x0ff000, 0x0ff000).w(this, FUNC(aerofgt_state::spinlbrk_flip_screen_w));
+ map(0x0ff002, 0x0ff003).portr("IN1");
+ map(0x0ff002, 0x0ff002).w(this, FUNC(aerofgt_state::karatblz_gfxbank_w));
+ map(0x0ff004, 0x0ff005).portr("IN2");
+ map(0x0ff006, 0x0ff007).portr("IN3");
+ map(0x0ff007, 0x0ff007).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x0ff008, 0x0ff009).portr("DSW").w(this, FUNC(aerofgt_state::aerofgt_bg1scrollx_w));
+ map(0x0ff00b, 0x0ff00b).r(this, FUNC(aerofgt_state::pending_command_r));
+ map(0x0ff00a, 0x0ff00b).w(this, FUNC(aerofgt_state::aerofgt_bg1scrolly_w));
+ map(0x0ff00c, 0x0ff00d).w(this, FUNC(aerofgt_state::aerofgt_bg2scrollx_w));
+ map(0x0ff00e, 0x0ff00f).w(this, FUNC(aerofgt_state::aerofgt_bg2scrolly_w));
+ map(0x0ff400, 0x0ff403).w("gga", FUNC(vsystem_gga_device::write)).umask16(0x00ff);
+}
+
+void aerofgt_state::karatblzbl_map(address_map &map)
+{
+ map.global_mask(0xfffff);
+ map(0x000000, 0x07ffff).rom();
+ map(0x080000, 0x081fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg1videoram_w)).share("bg1videoram");
+ map(0x082000, 0x083fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg2videoram_w)).share("bg2videoram");
+ map(0x0a0000, 0x0affff).ram().share("spriteram1");
+ map(0x0b0000, 0x0bffff).ram().share("spriteram2");
+ map(0x0c0000, 0x0cffff).ram(); /* work RAM */
+ map(0x0f8000, 0x0fbfff).ram(); /* work RAM */
+ map(0x0fc000, 0x0fc7ff).ram().share("spriteram3");
+ map(0x0fe000, 0x0fe7ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x0ff000, 0x0ff001).portr("IN0");
+ map(0x0ff000, 0x0ff000).w(this, FUNC(aerofgt_state::spinlbrk_flip_screen_w));
+ map(0x0ff002, 0x0ff003).portr("IN1");
+ map(0x0ff002, 0x0ff002).w(this, FUNC(aerofgt_state::karatblz_gfxbank_w));
+ map(0x0ff004, 0x0ff005).portr("IN2");
+ map(0x0ff006, 0x0ff007).portr("IN3");
+ map(0x0ff007, 0x0ff007).w(this, FUNC(aerofgt_state::karatblzbl_soundlatch_w));
+ map(0x0ff008, 0x0ff009).portr("DSW").w(this, FUNC(aerofgt_state::aerofgt_bg1scrollx_w));
+ map(0x0ff00b, 0x0ff00b).r(this, FUNC(aerofgt_state::pending_command_r));
+ map(0x0ff00a, 0x0ff00b).w(this, FUNC(aerofgt_state::aerofgt_bg1scrolly_w));
+ map(0x0ff00c, 0x0ff00d).w(this, FUNC(aerofgt_state::aerofgt_bg2scrollx_w));
+ map(0x0ff00e, 0x0ff00f).w(this, FUNC(aerofgt_state::aerofgt_bg2scrolly_w));
+ map(0x0ff400, 0x0ff403).nopw(); // GGA access
+}
+
+void aerofgt_state::spinlbrk_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x080000, 0x080fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg1videoram_w)).share("bg1videoram");
+ map(0x082000, 0x082fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg2videoram_w)).share("bg2videoram");
+ map(0xff8000, 0xffbfff).ram(); /* work RAM */
+ map(0xffc000, 0xffc7ff).ram().share("spriteram3");
+ map(0xffd000, 0xffd1ff).ram().share("rasterram"); /* bg1 scroll registers */
+ map(0xffe000, 0xffe7ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0xfff000, 0xfff001).portr("IN0");
+ map(0xfff000, 0xfff000).w(this, FUNC(aerofgt_state::spinlbrk_flip_screen_w));
+ map(0xfff001, 0xfff001).w(this, FUNC(aerofgt_state::spinlbrk_gfxbank_w));
+ map(0xfff002, 0xfff003).portr("IN1").w(this, FUNC(aerofgt_state::aerofgt_bg2scrollx_w));
+ map(0xfff004, 0xfff005).portr("DSW");
+ map(0xfff007, 0xfff007).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+// map(0xfff008, 0xfff009); - read when analog inputs are enabled
+// map(0xfff00a, 0xfff00b); /
+ map(0xfff400, 0xfff403).w("gga", FUNC(vsystem_gga_device::write)).umask16(0x00ff);
+}
+
+void aerofgt_state::turbofrc_map(address_map &map)
+{
+ map.global_mask(0xfffff);
+ map(0x000000, 0x0bffff).rom();
+ map(0x0c0000, 0x0cffff).ram(); /* work RAM */
+ map(0x0d0000, 0x0d1fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg1videoram_w)).share("bg1videoram");
+ map(0x0d2000, 0x0d3fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg2videoram_w)).share("bg2videoram");
+ map(0x0e0000, 0x0e3fff).ram().share("spriteram1");
+ map(0x0e4000, 0x0e7fff).ram().share("spriteram2");
+ map(0x0f8000, 0x0fbfff).ram(); /* work RAM */
+ map(0x0fc000, 0x0fc7ff).ram().share("spriteram3");
+ map(0x0fd000, 0x0fdfff).ram().share("rasterram"); /* bg1 scroll registers */
+ map(0x0fe000, 0x0fe7ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x0ff000, 0x0ff001).portr("IN0");
+ map(0x0ff001, 0x0ff001).w(this, FUNC(aerofgt_state::turbofrc_flip_screen_w));
+ map(0x0ff002, 0x0ff003).portr("IN1").w(this, FUNC(aerofgt_state::aerofgt_bg1scrolly_w));
+ map(0x0ff004, 0x0ff005).portr("DSW").w(this, FUNC(aerofgt_state::aerofgt_bg2scrollx_w));
+ map(0x0ff007, 0x0ff007).r(this, FUNC(aerofgt_state::pending_command_r));
+ map(0x0ff006, 0x0ff007).w(this, FUNC(aerofgt_state::aerofgt_bg2scrolly_w));
+ map(0x0ff008, 0x0ff009).portr("IN2");
+ map(0x0ff008, 0x0ff00b).w(this, FUNC(aerofgt_state::turbofrc_gfxbank_w));
+ map(0x0ff00c, 0x0ff00d).nopw(); /* related to bg2 (written together with the scroll registers) */
+ map(0x0ff00e, 0x0ff00e).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x0ff400, 0x0ff403).w("gga", FUNC(vsystem_gga_device::write)).umask16(0x00ff);
+}
+
+void aerofgt_state::aerofgtb_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x0c0000, 0x0cffff).ram(); /* work RAM */
+ map(0x0d0000, 0x0d1fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg1videoram_w)).share("bg1videoram");
+ map(0x0d2000, 0x0d3fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg2videoram_w)).share("bg2videoram");
+ map(0x0e0000, 0x0e3fff).ram().share("spriteram1");
+ map(0x0e4000, 0x0e7fff).ram().share("spriteram2");
+ map(0x0f8000, 0x0fbfff).ram(); /* work RAM */
+ map(0x0fc000, 0x0fc7ff).ram().share("spriteram3");
+ map(0x0fd000, 0x0fd7ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x0fe000, 0x0fe001).portr("IN0");
+ map(0x0fe001, 0x0fe001).w(this, FUNC(aerofgt_state::turbofrc_flip_screen_w));
+ map(0x0fe002, 0x0fe003).portr("IN1").w(this, FUNC(aerofgt_state::aerofgt_bg1scrolly_w));
+ map(0x0fe004, 0x0fe005).portr("DSW1").w(this, FUNC(aerofgt_state::aerofgt_bg2scrollx_w));
+ map(0x0fe007, 0x0fe007).r(this, FUNC(aerofgt_state::pending_command_r));
+ map(0x0fe006, 0x0fe007).w(this, FUNC(aerofgt_state::aerofgt_bg2scrolly_w));
+ map(0x0fe008, 0x0fe009).portr("DSW2");
+ map(0x0fe008, 0x0fe00b).w(this, FUNC(aerofgt_state::turbofrc_gfxbank_w));
+ map(0x0fe00e, 0x0fe00e).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x0fe400, 0x0fe403).w("gga", FUNC(vsystem_gga_device::write)).umask16(0x00ff);
+ map(0x0ff000, 0x0fffff).ram().share("rasterram"); /* used only for the scroll registers */
+}
+
+void aerofgt_state::aerofgt_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x1a0000, 0x1a07ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x1b0000, 0x1b07ff).ram().share("rasterram"); /* used only for the scroll registers */
+ map(0x1b0800, 0x1b0801).ram(); /* tracks watchdog state */
+ map(0x1b0ff0, 0x1b0fff).ram(); /* stack area during boot */
+ map(0x1b2000, 0x1b3fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg1videoram_w)).share("bg1videoram");
+ map(0x1b4000, 0x1b5fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg2videoram_w)).share("bg2videoram");
+ map(0x1c0000, 0x1c7fff).ram().share("spriteram1");
+ map(0x1d0000, 0x1d1fff).ram().share("spriteram3");
+ map(0xfef000, 0xffefff).ram(); /* work RAM */
+ map(0xffff80, 0xffff87).w(this, FUNC(aerofgt_state::aerofgt_gfxbank_w));
+ map(0xffff88, 0xffff89).w(this, FUNC(aerofgt_state::aerofgt_bg1scrolly_w)); /* + something else in the top byte */
+ map(0xffff90, 0xffff91).w(this, FUNC(aerofgt_state::aerofgt_bg2scrolly_w)); /* + something else in the top byte */
+ map(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));
+}
+
+void aerofgt_state::aerfboot_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x0c0000, 0x0cffff).ram(); /* work RAM */
+ map(0x0d0000, 0x0d1fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg1videoram_w)).share("bg1videoram");
+ map(0x0d2000, 0x0d3fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg2videoram_w)).share("bg2videoram");
+ map(0x0e0000, 0x0e3fff).ram().share("spriteram1");
+ map(0x0e4000, 0x0e7fff).ram().share("spriteram2");
+ map(0x0f8000, 0x0fbfff).ram(); /* work RAM */
+ map(0x0fc000, 0x0fc7ff).ram(); //.share("spriteram3");
+ map(0x0fd000, 0x0fd7ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x0fe000, 0x0fe001).portr("IN0");
+ map(0x0fe002, 0x0fe003).portr("IN1");
+ map(0x0fe004, 0x0fe005).portr("DSW1");
+ map(0x0fe008, 0x0fe009).portr("DSW2");
+ map(0x0fe002, 0x0fe003).w(this, FUNC(aerofgt_state::aerofgt_bg1scrolly_w));
+ map(0x0fe004, 0x0fe005).w(this, FUNC(aerofgt_state::aerofgt_bg2scrollx_w));
+ map(0x0fe006, 0x0fe007).w(this, FUNC(aerofgt_state::aerofgt_bg2scrolly_w));
+ map(0x0fe008, 0x0fe00b).w(this, FUNC(aerofgt_state::turbofrc_gfxbank_w));
+ map(0x0fe00e, 0x0fe00e).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x0fe010, 0x0fe011).nopw();
+ map(0x0fe012, 0x0fe013).nopw(); // MSB = watchdog?
+ map(0x0fe400, 0x0fe403).nopw(); // GGA access
+ map(0x0ff000, 0x0fffff).ram().share("rasterram"); /* used only for the scroll registers */
+ map(0x100000, 0x107fff).nopw();
+ map(0x108000, 0x10bfff).ram().share("spriteram3");
+ map(0x10c000, 0x117fff).nopw();
+}
+
+void aerofgt_state::aerfboo2_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x0c0000, 0x0cffff).ram(); /* work RAM */
+ map(0x0d0000, 0x0d1fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg1videoram_w)).share("bg1videoram");
+ map(0x0d2000, 0x0d3fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg2videoram_w)).share("bg2videoram");
+ map(0x0e0000, 0x0e3fff).ram().share("spriteram1");
+ map(0x0e4000, 0x0e7fff).ram().share("spriteram2");
+ map(0x0f8000, 0x0fbfff).ram(); /* work RAM */
+ map(0x0fc000, 0x0fc7ff).ram().share("spriteram3");
+ map(0x0fd000, 0x0fd7ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x0fe000, 0x0fe001).portr("IN0");
+ map(0x0fe002, 0x0fe003).portr("IN1");
+ map(0x0fe004, 0x0fe005).portr("DSW1");
+ map(0x0fe008, 0x0fe009).portr("DSW2");
+ map(0x0fe002, 0x0fe003).w(this, FUNC(aerofgt_state::aerofgt_bg1scrolly_w));
+ map(0x0fe004, 0x0fe005).w(this, FUNC(aerofgt_state::aerofgt_bg2scrollx_w));
+ map(0x0fe006, 0x0fe007).w(this, FUNC(aerofgt_state::aerofgt_bg2scrolly_w));
+ map(0x0fe008, 0x0fe00b).w(this, FUNC(aerofgt_state::turbofrc_gfxbank_w));
+ map(0x0fe006, 0x0fe006).r(m_oki, FUNC(okim6295_device::read));
+ map(0x0fe00e, 0x0fe00e).w(m_oki, FUNC(okim6295_device::write));
+ map(0x0fe01e, 0x0fe01f).w(this, FUNC(aerofgt_state::aerfboo2_okim6295_banking_w));
+// map(0x0fe010, 0x0fe011).nopw();
+// map(0x0fe012, 0x0fe013).w(this, FUNC(aerofgt_state::aerfboot_soundlatch_w));
+ map(0x0fe400, 0x0fe403).nopw(); // GGA access
+ map(0x0ff000, 0x0fffff).ram().share("rasterram"); /* used only for the scroll registers */
+}
+
+void aerofgt_state::wbbc97_map(address_map &map)
+{
+ map(0x000000, 0x3fffff).rom();
+ map(0x500000, 0x50ffff).ram(); /* work RAM */
+ map(0x600000, 0x605fff).ram().share("spriteram1");
+ map(0xa00000, 0xa3ffff).ram().share("bitmapram");
+ map(0xff8000, 0xff8fff).ram().w(this, FUNC(aerofgt_state::aerofgt_bg1videoram_w)).share("bg1videoram");
+ map(0xffc000, 0xffc3ff).writeonly().share("spriteram3");
+ map(0xffd000, 0xffdfff).ram().share("rasterram"); /* bg1 scroll registers */
+ map(0xffe000, 0xffefff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0xfff000, 0xfff001).portr("IN0");
+ map(0xfff001, 0xfff001).w(this, FUNC(aerofgt_state::pspikes_palette_bank_w));
+ map(0xfff002, 0xfff003).portr("IN1");
+ map(0xfff003, 0xfff003).w(this, FUNC(aerofgt_state::pspikes_gfxbank_w));
+ map(0xfff004, 0xfff005).portr("DSW").w(this, FUNC(aerofgt_state::aerofgt_bg1scrolly_w));
+ map(0xfff007, 0xfff007).r(this, FUNC(aerofgt_state::pending_command_r)).w(m_soundlatch, FUNC(generic_latch_8_device::write)).umask16(0x00ff);
+ map(0xfff00e, 0xfff00f).w(this, FUNC(aerofgt_state::wbbc97_bitmap_enable_w));
+ map(0xfff400, 0xfff403).nopw(); // GGA access
+}
+
+void aerofgt_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x77ff).rom();
+ map(0x7800, 0x7fff).ram();
+ map(0x8000, 0xffff).bankr("soundbank");
+}
+
+void aerofgt_state::spinlbrk_sound_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(aerofgt_state::spinlbrk_sh_bankswitch_w));
+ map(0x14, 0x14).rw(m_soundlatch, FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::acknowledge_w));
+ map(0x18, 0x1b).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write));
+}
+
+void aerofgt_state::turbofrc_sound_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(aerofgt_state::aerofgt_sh_bankswitch_w));
+ map(0x14, 0x14).rw(m_soundlatch, FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::acknowledge_w));
+ map(0x18, 0x1b).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write));
+}
+
+void aerofgt_state::aerofgt_sound_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x03).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write));
+ map(0x04, 0x04).w(this, FUNC(aerofgt_state::aerofgt_sh_bankswitch_w));
+ map(0x08, 0x08).w(m_soundlatch, FUNC(generic_latch_8_device::acknowledge_w));
+ map(0x0c, 0x0c).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
+
+void aerofgt_state::aerfboot_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x9000, 0x9000).w(this, FUNC(aerofgt_state::aerfboot_okim6295_banking_w));
+ map(0x9800, 0x9800).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
+
+void aerofgt_state::wbbc97_sound_map(address_map &map)
+{
+ map(0x0000, 0xefff).rom();
+ map(0xf000, 0xf7ff).ram();
+ map(0xf800, 0xf800).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xf810, 0xf811).w("ymsnd", FUNC(ym3812_device::write));
+ map(0xfc00, 0xfc00).noprw();
+ map(0xfc20, 0xfc20).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
+
+void aerofgt_state::karatblzbl_sound_map(address_map &map)
+{
+ map(0x0000, 0xefff).rom();
+ map(0xf000, 0xf7ff).ram();
+ map(0xf800, 0xf800).r(m_soundlatch, FUNC(generic_latch_8_device::read)); //.w("soundlatch2", FUNC(generic_latch_8_device::write));
+}
+
+void aerofgt_state::karatblzbl_sound_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).rw("ymsnd", FUNC(ym3812_device::status_port_r), FUNC(ym3812_device::control_port_w));
+ map(0x20, 0x20).w("ymsnd", FUNC(ym3812_device::write_port_w));
+ map(0x40, 0x40).w(this, FUNC(aerofgt_state::karatblzbl_d7759_write_port_0_w));
+ map(0x80, 0x80).w(this, FUNC(aerofgt_state::karatblzbl_d7759_reset_w));
+}
+
+void aerofgt_state::kickball_sound_map(address_map &map)
+{
+ map(0x0000, 0xefff).rom();
+ map(0xf000, 0xf7ff).ram();
+ map(0xf800, 0xf800).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
+
+void aerofgt_state::kickball_sound_portmap(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).rw("ymsnd", FUNC(ym3812_device::status_port_r), FUNC(ym3812_device::control_port_w));
+ map(0x20, 0x20).w("ymsnd", FUNC(ym3812_device::write_port_w));
+ map(0x40, 0x40).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xc0, 0xc0).w(m_soundlatch, FUNC(generic_latch_8_device::acknowledge_w));
+}
+
+
+void aerofgt_state::oki_map(address_map &map)
+{ //only for aerfboot for now
+ map(0x00000, 0x1ffff).rom();
+ map(0x20000, 0x3ffff).bankr("okibank");
+}
static INPUT_PORTS_START( pspikes )
PORT_START("IN0")