diff options
Diffstat (limited to 'src/mame/drivers/toaplan2.cpp')
-rw-r--r-- | src/mame/drivers/toaplan2.cpp | 1137 |
1 files changed, 587 insertions, 550 deletions
diff --git a/src/mame/drivers/toaplan2.cpp b/src/mame/drivers/toaplan2.cpp index c3ee8621b97..cb94b39099c 100644 --- a/src/mame/drivers/toaplan2.cpp +++ b/src/mame/drivers/toaplan2.cpp @@ -867,257 +867,271 @@ INTERRUPT_GEN_MEMBER(toaplan2_state::bbakraid_snd_interrupt) -ADDRESS_MAP_START(toaplan2_state::tekipaki_68k_mem) - AM_RANGE(0x000000, 0x01ffff) AM_ROM - AM_RANGE(0x020000, 0x03ffff) AM_ROM // extra for Whoopee - AM_RANGE(0x080000, 0x082fff) AM_RAM - AM_RANGE(0x0c0000, 0x0c0fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x140000, 0x14000d) AM_DEVREADWRITE("gp9001", gp9001vdp_device, gp9001_vdp_r, gp9001_vdp_w) - AM_RANGE(0x180000, 0x180001) AM_READ_PORT("DSWA") - AM_RANGE(0x180010, 0x180011) AM_READ_PORT("DSWB") - AM_RANGE(0x180020, 0x180021) AM_READ_PORT("SYS") - AM_RANGE(0x180030, 0x180031) AM_READ_PORT("JMPR") // CPU 2 busy and Region Jumper block - AM_RANGE(0x180040, 0x180041) AM_WRITE(toaplan2_coin_word_w) - AM_RANGE(0x180050, 0x180051) AM_READ_PORT("IN1") - AM_RANGE(0x180060, 0x180061) AM_READ_PORT("IN2") - AM_RANGE(0x180070, 0x180071) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) -ADDRESS_MAP_END - - - -ADDRESS_MAP_START(toaplan2_state::ghox_68k_mem) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x040000, 0x040001) AM_READ(ghox_p2_h_analog_r) - AM_RANGE(0x080000, 0x083fff) AM_RAM - AM_RANGE(0x0c0000, 0x0c0fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x100000, 0x100001) AM_READ(ghox_p1_h_analog_r) - AM_RANGE(0x140000, 0x14000d) AM_DEVREADWRITE("gp9001", gp9001vdp_device, gp9001_vdp_r, gp9001_vdp_w) - AM_RANGE(0x180000, 0x180fff) AM_READWRITE(shared_ram_r, shared_ram_w) - AM_RANGE(0x181000, 0x181001) AM_WRITE(toaplan2_coin_word_w) - AM_RANGE(0x18100c, 0x18100d) AM_READ_PORT("JMPR") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(toaplan2_state::dogyuun_68k_mem) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x103fff) AM_RAM - AM_RANGE(0x200010, 0x200011) AM_READ_PORT("IN1") - AM_RANGE(0x200014, 0x200015) AM_READ_PORT("IN2") - AM_RANGE(0x200018, 0x200019) AM_READ_PORT("SYS") - AM_RANGE(0x20001c, 0x20001d) AM_WRITE(toaplan2_v25_coin_word_w) // Coin count/lock + v25 reset line - AM_RANGE(0x210000, 0x21ffff) AM_READWRITE(shared_ram_r, shared_ram_w ) - AM_RANGE(0x300000, 0x30000d) AM_DEVREADWRITE("gp9001", gp9001vdp_device, gp9001_vdp_r, gp9001_vdp_w) - AM_RANGE(0x400000, 0x400fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x500000, 0x50000d) AM_DEVREADWRITE("gp9001_1", gp9001vdp_device, gp9001_vdp_r, gp9001_vdp_w) - AM_RANGE(0x700000, 0x700001) AM_READ(video_count_r) // test bit 8 -ADDRESS_MAP_END - - -ADDRESS_MAP_START(toaplan2_state::kbash_68k_mem) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x103fff) AM_RAM - AM_RANGE(0x200000, 0x200fff) AM_READWRITE(shared_ram_r, shared_ram_w ) - AM_RANGE(0x208010, 0x208011) AM_READ_PORT("IN1") - AM_RANGE(0x208014, 0x208015) AM_READ_PORT("IN2") - AM_RANGE(0x208018, 0x208019) AM_READ_PORT("SYS") - AM_RANGE(0x20801c, 0x20801d) AM_WRITE(toaplan2_coin_word_w) - AM_RANGE(0x300000, 0x30000d) AM_DEVREADWRITE("gp9001", gp9001vdp_device, gp9001_vdp_r, gp9001_vdp_w) - AM_RANGE(0x400000, 0x400fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x700000, 0x700001) AM_READ(video_count_r) // test bit 8 -ADDRESS_MAP_END - - -ADDRESS_MAP_START(toaplan2_state::kbash2_68k_mem) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x103fff) AM_RAM - AM_RANGE(0x104000, 0x10401f) AM_RAM // Sound related? - AM_RANGE(0x200000, 0x200001) AM_NOP // Left over from original code - Sound Number write, Status read - AM_RANGE(0x200002, 0x200003) AM_WRITENOP // Left over from original code - Reset Sound - AM_RANGE(0x200004, 0x200005) AM_READ_PORT("DSWA") - AM_RANGE(0x200008, 0x200009) AM_READ_PORT("DSWB") - AM_RANGE(0x20000c, 0x20000d) AM_READ_PORT("JMPR") - AM_RANGE(0x200010, 0x200011) AM_READ_PORT("IN1") - AM_RANGE(0x200014, 0x200015) AM_READ_PORT("IN2") - AM_RANGE(0x200018, 0x200019) AM_READ_PORT("SYS") - AM_RANGE(0x200020, 0x200021) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x200024, 0x200025) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x200028, 0x200029) AM_WRITE(oki1_bankswitch_w) - AM_RANGE(0x20002c, 0x20002d) AM_READ(video_count_r) - AM_RANGE(0x300000, 0x30000d) AM_DEVREADWRITE("gp9001", gp9001vdp_device, gp9001_vdp_r, gp9001_vdp_w) - AM_RANGE(0x400000, 0x400fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(toaplan2_state::truxton2_68k_mem) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM - AM_RANGE(0x200000, 0x20000d) AM_DEVREADWRITE("gp9001", gp9001vdp_device, gp9001_vdp_r, gp9001_vdp_w) - AM_RANGE(0x300000, 0x300fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x400000, 0x401fff) AM_RAM_WRITE(toaplan2_tx_videoram_w) AM_SHARE("tx_videoram") - AM_RANGE(0x402000, 0x402fff) AM_RAM AM_SHARE("tx_lineselect") - AM_RANGE(0x403000, 0x4031ff) AM_RAM_WRITE(toaplan2_tx_linescroll_w) AM_SHARE("tx_linescroll") - AM_RANGE(0x403200, 0x403fff) AM_RAM - AM_RANGE(0x500000, 0x50ffff) AM_RAM_WRITE(toaplan2_tx_gfxram16_w) AM_SHARE("tx_gfxram16") - AM_RANGE(0x600000, 0x600001) AM_READ(video_count_r) - AM_RANGE(0x700000, 0x700001) AM_READ_PORT("DSWA") - AM_RANGE(0x700002, 0x700003) AM_READ_PORT("DSWB") - AM_RANGE(0x700004, 0x700005) AM_READ_PORT("JMPR") - AM_RANGE(0x700006, 0x700007) AM_READ_PORT("IN1") - AM_RANGE(0x700008, 0x700009) AM_READ_PORT("IN2") - AM_RANGE(0x70000a, 0x70000b) AM_READ_PORT("SYS") - AM_RANGE(0x700010, 0x700011) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x700014, 0x700017) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff) - AM_RANGE(0x70001e, 0x70001f) AM_WRITE(toaplan2_coin_word_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(toaplan2_state::pipibibs_68k_mem) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x080000, 0x082fff) AM_RAM - AM_RANGE(0x0c0000, 0x0c0fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x140000, 0x14000d) AM_DEVREADWRITE("gp9001", gp9001vdp_device, gp9001_vdp_r, gp9001_vdp_w) - AM_RANGE(0x190000, 0x190fff) AM_READWRITE(shared_ram_r, shared_ram_w) - AM_RANGE(0x19c01c, 0x19c01d) AM_WRITE(toaplan2_coin_word_w) - AM_RANGE(0x19c020, 0x19c021) AM_READ_PORT("DSWA") - AM_RANGE(0x19c024, 0x19c025) AM_READ_PORT("DSWB") - AM_RANGE(0x19c028, 0x19c029) AM_READ_PORT("JMPR") - AM_RANGE(0x19c02c, 0x19c02d) AM_READ_PORT("SYS") - AM_RANGE(0x19c030, 0x19c031) AM_READ_PORT("IN1") - AM_RANGE(0x19c034, 0x19c035) AM_READ_PORT("IN2") -ADDRESS_MAP_END +void toaplan2_state::tekipaki_68k_mem(address_map &map) +{ + map(0x000000, 0x01ffff).rom(); + map(0x020000, 0x03ffff).rom(); // extra for Whoopee + map(0x080000, 0x082fff).ram(); + map(0x0c0000, 0x0c0fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x140000, 0x14000d).rw(m_vdp0, FUNC(gp9001vdp_device::gp9001_vdp_r), FUNC(gp9001vdp_device::gp9001_vdp_w)); + map(0x180000, 0x180001).portr("DSWA"); + map(0x180010, 0x180011).portr("DSWB"); + map(0x180020, 0x180021).portr("SYS"); + map(0x180030, 0x180031).portr("JMPR"); // CPU 2 busy and Region Jumper block + map(0x180040, 0x180041).w(this, FUNC(toaplan2_state::toaplan2_coin_word_w)); + map(0x180050, 0x180051).portr("IN1"); + map(0x180060, 0x180061).portr("IN2"); + map(0x180071, 0x180071).w(m_soundlatch, FUNC(generic_latch_8_device::write)); +} + + + +void toaplan2_state::ghox_68k_mem(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x040000, 0x040001).r(this, FUNC(toaplan2_state::ghox_p2_h_analog_r)); + map(0x080000, 0x083fff).ram(); + map(0x0c0000, 0x0c0fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x100000, 0x100001).r(this, FUNC(toaplan2_state::ghox_p1_h_analog_r)); + map(0x140000, 0x14000d).rw(m_vdp0, FUNC(gp9001vdp_device::gp9001_vdp_r), FUNC(gp9001vdp_device::gp9001_vdp_w)); + map(0x180000, 0x180fff).rw(this, FUNC(toaplan2_state::shared_ram_r), FUNC(toaplan2_state::shared_ram_w)); + map(0x181000, 0x181001).w(this, FUNC(toaplan2_state::toaplan2_coin_word_w)); + map(0x18100c, 0x18100d).portr("JMPR"); +} + + +void toaplan2_state::dogyuun_68k_mem(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x103fff).ram(); + map(0x200010, 0x200011).portr("IN1"); + map(0x200014, 0x200015).portr("IN2"); + map(0x200018, 0x200019).portr("SYS"); + map(0x20001c, 0x20001d).w(this, FUNC(toaplan2_state::toaplan2_v25_coin_word_w)); // Coin count/lock + v25 reset line + map(0x210000, 0x21ffff).rw(this, FUNC(toaplan2_state::shared_ram_r), FUNC(toaplan2_state::shared_ram_w)); + map(0x300000, 0x30000d).rw(m_vdp0, FUNC(gp9001vdp_device::gp9001_vdp_r), FUNC(gp9001vdp_device::gp9001_vdp_w)); + map(0x400000, 0x400fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x500000, 0x50000d).rw(m_vdp1, FUNC(gp9001vdp_device::gp9001_vdp_r), FUNC(gp9001vdp_device::gp9001_vdp_w)); + map(0x700000, 0x700001).r(this, FUNC(toaplan2_state::video_count_r)); // test bit 8 +} + + +void toaplan2_state::kbash_68k_mem(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x103fff).ram(); + map(0x200000, 0x200fff).rw(this, FUNC(toaplan2_state::shared_ram_r), FUNC(toaplan2_state::shared_ram_w)); + map(0x208010, 0x208011).portr("IN1"); + map(0x208014, 0x208015).portr("IN2"); + map(0x208018, 0x208019).portr("SYS"); + map(0x20801c, 0x20801d).w(this, FUNC(toaplan2_state::toaplan2_coin_word_w)); + map(0x300000, 0x30000d).rw(m_vdp0, FUNC(gp9001vdp_device::gp9001_vdp_r), FUNC(gp9001vdp_device::gp9001_vdp_w)); + map(0x400000, 0x400fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x700000, 0x700001).r(this, FUNC(toaplan2_state::video_count_r)); // test bit 8 +} + + +void toaplan2_state::kbash2_68k_mem(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x103fff).ram(); + map(0x104000, 0x10401f).ram(); // Sound related? + map(0x200000, 0x200001).noprw(); // Left over from original code - Sound Number write, Status read + map(0x200002, 0x200003).nopw(); // Left over from original code - Reset Sound + map(0x200004, 0x200005).portr("DSWA"); + map(0x200008, 0x200009).portr("DSWB"); + map(0x20000c, 0x20000d).portr("JMPR"); + map(0x200010, 0x200011).portr("IN1"); + map(0x200014, 0x200015).portr("IN2"); + map(0x200018, 0x200019).portr("SYS"); + map(0x200021, 0x200021).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x200025, 0x200025).rw(m_oki1, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x200028, 0x200029).w(this, FUNC(toaplan2_state::oki1_bankswitch_w)); + map(0x20002c, 0x20002d).r(this, FUNC(toaplan2_state::video_count_r)); + map(0x300000, 0x30000d).rw(m_vdp0, FUNC(gp9001vdp_device::gp9001_vdp_r), FUNC(gp9001vdp_device::gp9001_vdp_w)); + map(0x400000, 0x400fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); +} + + +void toaplan2_state::truxton2_68k_mem(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x10ffff).ram(); + map(0x200000, 0x20000d).rw(m_vdp0, FUNC(gp9001vdp_device::gp9001_vdp_r), FUNC(gp9001vdp_device::gp9001_vdp_w)); + map(0x300000, 0x300fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x400000, 0x401fff).ram().w(this, FUNC(toaplan2_state::toaplan2_tx_videoram_w)).share("tx_videoram"); + map(0x402000, 0x402fff).ram().share("tx_lineselect"); + map(0x403000, 0x4031ff).ram().w(this, FUNC(toaplan2_state::toaplan2_tx_linescroll_w)).share("tx_linescroll"); + map(0x403200, 0x403fff).ram(); + map(0x500000, 0x50ffff).ram().w(this, FUNC(toaplan2_state::toaplan2_tx_gfxram16_w)).share("tx_gfxram16"); + map(0x600000, 0x600001).r(this, FUNC(toaplan2_state::video_count_r)); + map(0x700000, 0x700001).portr("DSWA"); + map(0x700002, 0x700003).portr("DSWB"); + map(0x700004, 0x700005).portr("JMPR"); + map(0x700006, 0x700007).portr("IN1"); + map(0x700008, 0x700009).portr("IN2"); + map(0x70000a, 0x70000b).portr("SYS"); + map(0x700011, 0x700011).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x700014, 0x700017).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)).umask16(0x00ff); + map(0x70001e, 0x70001f).w(this, FUNC(toaplan2_state::toaplan2_coin_word_w)); +} + + +void toaplan2_state::pipibibs_68k_mem(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x080000, 0x082fff).ram(); + map(0x0c0000, 0x0c0fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x140000, 0x14000d).rw(m_vdp0, FUNC(gp9001vdp_device::gp9001_vdp_r), FUNC(gp9001vdp_device::gp9001_vdp_w)); + map(0x190000, 0x190fff).rw(this, FUNC(toaplan2_state::shared_ram_r), FUNC(toaplan2_state::shared_ram_w)); + map(0x19c01c, 0x19c01d).w(this, FUNC(toaplan2_state::toaplan2_coin_word_w)); + map(0x19c020, 0x19c021).portr("DSWA"); + map(0x19c024, 0x19c025).portr("DSWB"); + map(0x19c028, 0x19c029).portr("JMPR"); + map(0x19c02c, 0x19c02d).portr("SYS"); + map(0x19c030, 0x19c031).portr("IN1"); + map(0x19c034, 0x19c035).portr("IN2"); +} // odd scroll registers -ADDRESS_MAP_START(toaplan2_state::pipibibi_bootleg_68k_mem) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x080000, 0x082fff) AM_RAM - AM_RANGE(0x083000, 0x0837ff) AM_DEVREADWRITE("gp9001", gp9001vdp_device, pipibibi_bootleg_spriteram16_r, pipibibi_bootleg_spriteram16_w) // SpriteRAM - AM_RANGE(0x083800, 0x087fff) AM_RAM // SpriteRAM (unused) - AM_RANGE(0x0c0000, 0x0c0fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x120000, 0x120fff) AM_RAM // Copy of SpriteRAM ? +void toaplan2_state::pipibibi_bootleg_68k_mem(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x080000, 0x082fff).ram(); + map(0x083000, 0x0837ff).rw(m_vdp0, FUNC(gp9001vdp_device::pipibibi_bootleg_spriteram16_r), FUNC(gp9001vdp_device::pipibibi_bootleg_spriteram16_w)); // SpriteRAM + map(0x083800, 0x087fff).ram(); // SpriteRAM (unused) + map(0x0c0000, 0x0c0fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x120000, 0x120fff).ram(); // Copy of SpriteRAM ? // AM_RANGE(0x13f000, 0x13f001) AM_WRITENOP // ??? - AM_RANGE(0x180000, 0x182fff) AM_DEVREADWRITE("gp9001", gp9001vdp_device, pipibibi_bootleg_videoram16_r, pipibibi_bootleg_videoram16_w) // TileRAM - AM_RANGE(0x188000, 0x18800f) AM_DEVWRITE("gp9001", gp9001vdp_device, pipibibi_bootleg_scroll_w) - AM_RANGE(0x190002, 0x190003) AM_READ(shared_ram_r) // Z80 ready ? - AM_RANGE(0x190010, 0x190011) AM_WRITE(shared_ram_w) // Z80 task to perform - AM_RANGE(0x19c01c, 0x19c01d) AM_WRITE(toaplan2_coin_word_w) - AM_RANGE(0x19c020, 0x19c021) AM_READ_PORT("DSWA") - AM_RANGE(0x19c024, 0x19c025) AM_READ_PORT("DSWB") - AM_RANGE(0x19c028, 0x19c029) AM_READ_PORT("JMPR") - AM_RANGE(0x19c02c, 0x19c02d) AM_READ_PORT("SYS") - AM_RANGE(0x19c030, 0x19c031) AM_READ_PORT("IN1") - AM_RANGE(0x19c034, 0x19c035) AM_READ_PORT("IN2") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(toaplan2_state::fixeight_68k_mem) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x103fff) AM_RAM - AM_RANGE(0x200000, 0x200001) AM_READ_PORT("IN1") - AM_RANGE(0x200004, 0x200005) AM_READ_PORT("IN2") - AM_RANGE(0x200008, 0x200009) AM_READ_PORT("IN3") - AM_RANGE(0x200010, 0x200011) AM_READ_PORT("SYS") - AM_RANGE(0x20001c, 0x20001d) AM_WRITE(toaplan2_coin_word_w) - AM_RANGE(0x280000, 0x28ffff) AM_READWRITE(shared_ram_r, shared_ram_w ) - AM_RANGE(0x300000, 0x30000d) AM_DEVREADWRITE("gp9001", gp9001vdp_device, gp9001_vdp_r, gp9001_vdp_w) - AM_RANGE(0x400000, 0x400fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x500000, 0x501fff) AM_RAM_WRITE(toaplan2_tx_videoram_w) AM_SHARE("tx_videoram") - AM_RANGE(0x502000, 0x5021ff) AM_RAM AM_SHARE("tx_lineselect") - AM_RANGE(0x503000, 0x5031ff) AM_RAM_WRITE(toaplan2_tx_linescroll_w) AM_SHARE("tx_linescroll") - AM_RANGE(0x600000, 0x60ffff) AM_RAM_WRITE(toaplan2_tx_gfxram16_w) AM_SHARE("tx_gfxram16") - AM_RANGE(0x700000, 0x700001) AM_WRITE(fixeight_subcpu_ctrl_w) - AM_RANGE(0x800000, 0x800001) AM_READ(video_count_r) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(toaplan2_state::fixeightbl_68k_mem) - AM_RANGE(0x000000, 0x0fffff) AM_ROM // 0-7ffff ? - AM_RANGE(0x100000, 0x10ffff) AM_RAM // 100000-107fff 105000-105xxx 106000-106xxx 108000 - related to sound ? - AM_RANGE(0x200000, 0x200001) AM_READ_PORT("IN1") - AM_RANGE(0x200004, 0x200005) AM_READ_PORT("IN2") - AM_RANGE(0x200008, 0x200009) AM_READ_PORT("IN3") - AM_RANGE(0x20000c, 0x20000d) AM_READ_PORT("DSWB") - AM_RANGE(0x200010, 0x200011) AM_READ_PORT("SYS") - AM_RANGE(0x200014, 0x200015) AM_WRITE(fixeightbl_oki_bankswitch_w) // Sound banking. Code at $4084c, $5070 - AM_RANGE(0x200018, 0x200019) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x20001c, 0x20001d) AM_READ_PORT("DSWA") - AM_RANGE(0x300000, 0x30000d) AM_DEVREADWRITE("gp9001", gp9001vdp_device, gp9001_vdp_r, gp9001_vdp_w) - AM_RANGE(0x400000, 0x400fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x500000, 0x501fff) AM_RAM_WRITE(toaplan2_tx_videoram_w) AM_SHARE("tx_videoram") - AM_RANGE(0x700000, 0x700001) AM_READ(video_count_r) - AM_RANGE(0x800000, 0x87ffff) AM_ROM AM_REGION("maincpu", 0x80000) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(toaplan2_state::vfive_68k_mem) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x103fff) AM_RAM + map(0x180000, 0x182fff).rw(m_vdp0, FUNC(gp9001vdp_device::pipibibi_bootleg_videoram16_r), FUNC(gp9001vdp_device::pipibibi_bootleg_videoram16_w)); // TileRAM + map(0x188000, 0x18800f).w(m_vdp0, FUNC(gp9001vdp_device::pipibibi_bootleg_scroll_w)); + map(0x190002, 0x190003).r(this, FUNC(toaplan2_state::shared_ram_r)); // Z80 ready ? + map(0x190010, 0x190011).w(this, FUNC(toaplan2_state::shared_ram_w)); // Z80 task to perform + map(0x19c01c, 0x19c01d).w(this, FUNC(toaplan2_state::toaplan2_coin_word_w)); + map(0x19c020, 0x19c021).portr("DSWA"); + map(0x19c024, 0x19c025).portr("DSWB"); + map(0x19c028, 0x19c029).portr("JMPR"); + map(0x19c02c, 0x19c02d).portr("SYS"); + map(0x19c030, 0x19c031).portr("IN1"); + map(0x19c034, 0x19c035).portr("IN2"); +} + + +void toaplan2_state::fixeight_68k_mem(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x103fff).ram(); + map(0x200000, 0x200001).portr("IN1"); + map(0x200004, 0x200005).portr("IN2"); + map(0x200008, 0x200009).portr("IN3"); + map(0x200010, 0x200011).portr("SYS"); + map(0x20001c, 0x20001d).w(this, FUNC(toaplan2_state::toaplan2_coin_word_w)); + map(0x280000, 0x28ffff).rw(this, FUNC(toaplan2_state::shared_ram_r), FUNC(toaplan2_state::shared_ram_w)); + map(0x300000, 0x30000d).rw(m_vdp0, FUNC(gp9001vdp_device::gp9001_vdp_r), FUNC(gp9001vdp_device::gp9001_vdp_w)); + map(0x400000, 0x400fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x500000, 0x501fff).ram().w(this, FUNC(toaplan2_state::toaplan2_tx_videoram_w)).share("tx_videoram"); + map(0x502000, 0x5021ff).ram().share("tx_lineselect"); + map(0x503000, 0x5031ff).ram().w(this, FUNC(toaplan2_state::toaplan2_tx_linescroll_w)).share("tx_linescroll"); + map(0x600000, 0x60ffff).ram().w(this, FUNC(toaplan2_state::toaplan2_tx_gfxram16_w)).share("tx_gfxram16"); + map(0x700000, 0x700001).w(this, FUNC(toaplan2_state::fixeight_subcpu_ctrl_w)); + map(0x800000, 0x800001).r(this, FUNC(toaplan2_state::video_count_r)); +} + + +void toaplan2_state::fixeightbl_68k_mem(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); // 0-7ffff ? + map(0x100000, 0x10ffff).ram(); // 100000-107fff 105000-105xxx 106000-106xxx 108000 - related to sound ? + map(0x200000, 0x200001).portr("IN1"); + map(0x200004, 0x200005).portr("IN2"); + map(0x200008, 0x200009).portr("IN3"); + map(0x20000c, 0x20000d).portr("DSWB"); + map(0x200010, 0x200011).portr("SYS"); + map(0x200014, 0x200015).w(this, FUNC(toaplan2_state::fixeightbl_oki_bankswitch_w)); // Sound banking. Code at $4084c, $5070 + map(0x200019, 0x200019).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x20001c, 0x20001d).portr("DSWA"); + map(0x300000, 0x30000d).rw(m_vdp0, FUNC(gp9001vdp_device::gp9001_vdp_r), FUNC(gp9001vdp_device::gp9001_vdp_w)); + map(0x400000, 0x400fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x500000, 0x501fff).ram().w(this, FUNC(toaplan2_state::toaplan2_tx_videoram_w)).share("tx_videoram"); + map(0x700000, 0x700001).r(this, FUNC(toaplan2_state::video_count_r)); + map(0x800000, 0x87ffff).rom().region("maincpu", 0x80000); +} + + +void toaplan2_state::vfive_68k_mem(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x103fff).ram(); // AM_RANGE(0x200000, 0x20ffff) AM_NOP // Read at startup by broken ROM checksum code - see notes - AM_RANGE(0x200010, 0x200011) AM_READ_PORT("IN1") - AM_RANGE(0x200014, 0x200015) AM_READ_PORT("IN2") - AM_RANGE(0x200018, 0x200019) AM_READ_PORT("SYS") - AM_RANGE(0x20001c, 0x20001d) AM_WRITE(toaplan2_v25_coin_word_w) // Coin count/lock + v25 reset line - AM_RANGE(0x210000, 0x21ffff) AM_READWRITE(shared_ram_r, shared_ram_w ) - AM_RANGE(0x300000, 0x30000d) AM_DEVREADWRITE("gp9001", gp9001vdp_device, gp9001_vdp_r, gp9001_vdp_w) - AM_RANGE(0x400000, 0x400fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x700000, 0x700001) AM_READ(video_count_r) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(toaplan2_state::batsugun_68k_mem) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM - AM_RANGE(0x200010, 0x200011) AM_READ_PORT("IN1") - AM_RANGE(0x200014, 0x200015) AM_READ_PORT("IN2") - AM_RANGE(0x200018, 0x200019) AM_READ_PORT("SYS") - AM_RANGE(0x20001c, 0x20001d) AM_WRITE(toaplan2_v25_coin_word_w) // Coin count/lock + v25 reset line - AM_RANGE(0x210000, 0x21ffff) AM_READWRITE(shared_ram_r, shared_ram_w ) - AM_RANGE(0x300000, 0x30000d) AM_DEVREADWRITE("gp9001", gp9001vdp_device, gp9001_vdp_r, gp9001_vdp_w) - AM_RANGE(0x400000, 0x400fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x500000, 0x50000d) AM_DEVREADWRITE("gp9001_1", gp9001vdp_device, gp9001_vdp_r, gp9001_vdp_w) - AM_RANGE(0x700000, 0x700001) AM_READ(video_count_r) -ADDRESS_MAP_END - -ADDRESS_MAP_START(toaplan2_state::pwrkick_68k_mem) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x103fff) AM_RAM AM_SHARE("nvram") // Only 10022C-10037B is actually saved as NVRAM - AM_RANGE(0x104000, 0x10ffff) AM_RAM - - AM_RANGE(0x200000, 0x20000f) AM_DEVREADWRITE8("rtc", upd4992_device, read, write, 0x00ff ) - AM_RANGE(0x300000, 0x30000d) AM_DEVREADWRITE("gp9001", gp9001vdp_device, gp9001_vdp_r, gp9001_vdp_w) - AM_RANGE(0x400000, 0x400fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x600000, 0x600001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) - - AM_RANGE(0x700000, 0x700001) AM_READ(video_count_r) - AM_RANGE(0x700004, 0x700005) AM_READ_PORT("DSWA") - AM_RANGE(0x700008, 0x700009) AM_READ_PORT("DSWB") - AM_RANGE(0x70000c, 0x70000d) AM_READ_PORT("IN1") - AM_RANGE(0x700014, 0x700015) AM_READ_PORT("IN2") - AM_RANGE(0x700018, 0x700019) AM_READ_PORT("DSWC") - AM_RANGE(0x70001c, 0x70001d) AM_READ_PORT("SYS") - AM_RANGE(0x700030, 0x700031) AM_WRITE(oki_bankswitch_w) - AM_RANGE(0x700034, 0x700035) AM_WRITE8(pwrkick_coin_w, 0x00ff) - AM_RANGE(0x700038, 0x700039) AM_WRITE8(pwrkick_coin_lockout_w, 0x00ff) -ADDRESS_MAP_END - -ADDRESS_MAP_START(toaplan2_state::othldrby_68k_mem) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x103fff) AM_RAM AM_SHARE("nvram") // Only 10331E-103401 is actually saved as NVRAM - AM_RANGE(0x104000, 0x10ffff) AM_RAM - - AM_RANGE(0x200000, 0x20000f) AM_DEVREADWRITE8("rtc", upd4992_device, read, write, 0x00ff ) - AM_RANGE(0x300000, 0x30000d) AM_DEVREADWRITE("gp9001", gp9001vdp_device, gp9001_vdp_r, gp9001_vdp_w) - AM_RANGE(0x400000, 0x400fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x600000, 0x600001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) - - AM_RANGE(0x700000, 0x700001) AM_READ(video_count_r) - AM_RANGE(0x700004, 0x700005) AM_READ_PORT("DSWA") - AM_RANGE(0x700008, 0x700009) AM_READ_PORT("DSWB") - AM_RANGE(0x70000c, 0x70000d) AM_READ_PORT("IN1") - AM_RANGE(0x700010, 0x700011) AM_READ_PORT("IN2") - AM_RANGE(0x70001c, 0x70001d) AM_READ_PORT("SYS") - AM_RANGE(0x700030, 0x700031) AM_WRITE(oki_bankswitch_w) - AM_RANGE(0x700034, 0x700035) AM_WRITE(toaplan2_coin_word_w) -ADDRESS_MAP_END + map(0x200010, 0x200011).portr("IN1"); + map(0x200014, 0x200015).portr("IN2"); + map(0x200018, 0x200019).portr("SYS"); + map(0x20001c, 0x20001d).w(this, FUNC(toaplan2_state::toaplan2_v25_coin_word_w)); // Coin count/lock + v25 reset line + map(0x210000, 0x21ffff).rw(this, FUNC(toaplan2_state::shared_ram_r), FUNC(toaplan2_state::shared_ram_w)); + map(0x300000, 0x30000d).rw(m_vdp0, FUNC(gp9001vdp_device::gp9001_vdp_r), FUNC(gp9001vdp_device::gp9001_vdp_w)); + map(0x400000, 0x400fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x700000, 0x700001).r(this, FUNC(toaplan2_state::video_count_r)); +} + + +void toaplan2_state::batsugun_68k_mem(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x10ffff).ram(); + map(0x200010, 0x200011).portr("IN1"); + map(0x200014, 0x200015).portr("IN2"); + map(0x200018, 0x200019).portr("SYS"); + map(0x20001c, 0x20001d).w(this, FUNC(toaplan2_state::toaplan2_v25_coin_word_w)); // Coin count/lock + v25 reset line + map(0x210000, 0x21ffff).rw(this, FUNC(toaplan2_state::shared_ram_r), FUNC(toaplan2_state::shared_ram_w)); + map(0x300000, 0x30000d).rw(m_vdp0, FUNC(gp9001vdp_device::gp9001_vdp_r), FUNC(gp9001vdp_device::gp9001_vdp_w)); + map(0x400000, 0x400fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x500000, 0x50000d).rw(m_vdp1, FUNC(gp9001vdp_device::gp9001_vdp_r), FUNC(gp9001vdp_device::gp9001_vdp_w)); + map(0x700000, 0x700001).r(this, FUNC(toaplan2_state::video_count_r)); +} + +void toaplan2_state::pwrkick_68k_mem(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x103fff).ram().share("nvram"); // Only 10022C-10037B is actually saved as NVRAM + map(0x104000, 0x10ffff).ram(); + + map(0x200000, 0x20000f).rw(m_rtc, FUNC(upd4992_device::read), FUNC(upd4992_device::write)).umask16(0x00ff); + map(0x300000, 0x30000d).rw(m_vdp0, FUNC(gp9001vdp_device::gp9001_vdp_r), FUNC(gp9001vdp_device::gp9001_vdp_w)); + map(0x400000, 0x400fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x600001, 0x600001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + + map(0x700000, 0x700001).r(this, FUNC(toaplan2_state::video_count_r)); + map(0x700004, 0x700005).portr("DSWA"); + map(0x700008, 0x700009).portr("DSWB"); + map(0x70000c, 0x70000d).portr("IN1"); + map(0x700014, 0x700015).portr("IN2"); + map(0x700018, 0x700019).portr("DSWC"); + map(0x70001c, 0x70001d).portr("SYS"); + map(0x700030, 0x700031).w(this, FUNC(toaplan2_state::oki_bankswitch_w)); + map(0x700035, 0x700035).w(this, FUNC(toaplan2_state::pwrkick_coin_w)); + map(0x700039, 0x700039).w(this, FUNC(toaplan2_state::pwrkick_coin_lockout_w)); +} + +void toaplan2_state::othldrby_68k_mem(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x103fff).ram().share("nvram"); // Only 10331E-103401 is actually saved as NVRAM + map(0x104000, 0x10ffff).ram(); + + map(0x200000, 0x20000f).rw(m_rtc, FUNC(upd4992_device::read), FUNC(upd4992_device::write)).umask16(0x00ff); + map(0x300000, 0x30000d).rw(m_vdp0, FUNC(gp9001vdp_device::gp9001_vdp_r), FUNC(gp9001vdp_device::gp9001_vdp_w)); + map(0x400000, 0x400fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x600001, 0x600001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + + map(0x700000, 0x700001).r(this, FUNC(toaplan2_state::video_count_r)); + map(0x700004, 0x700005).portr("DSWA"); + map(0x700008, 0x700009).portr("DSWB"); + map(0x70000c, 0x70000d).portr("IN1"); + map(0x700010, 0x700011).portr("IN2"); + map(0x70001c, 0x70001d).portr("SYS"); + map(0x700030, 0x700031).w(this, FUNC(toaplan2_state::oki_bankswitch_w)); + map(0x700034, 0x700035).w(this, FUNC(toaplan2_state::toaplan2_coin_word_w)); +} WRITE16_MEMBER(toaplan2_state::enmadaio_oki_bank_w) @@ -1135,290 +1149,310 @@ WRITE16_MEMBER(toaplan2_state::enmadaio_oki_bank_w) } -ADDRESS_MAP_START(toaplan2_state::enmadaio_68k_mem) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x103fff) AM_RAM // AM_SHARE("nvram") - AM_RANGE(0x104000, 0x10ffff) AM_RAM - - AM_RANGE(0x200000, 0x20000d) AM_DEVREADWRITE("gp9001", gp9001vdp_device, gp9001_vdp_r, gp9001_vdp_w) - AM_RANGE(0x300000, 0x300fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x400000, 0x400003) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff) - AM_RANGE(0x500000, 0x500001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) - - AM_RANGE(0x700000, 0x700001) AM_READ(video_count_r) - - AM_RANGE(0x700004, 0x700005) AM_READ_PORT("DSWA") - AM_RANGE(0x70000c, 0x70000d) AM_READ_PORT("MISC2") - AM_RANGE(0x700010, 0x700011) AM_READ_PORT("MISC3") - AM_RANGE(0x700014, 0x700015) AM_READ_PORT("MISC4") - AM_RANGE(0x700018, 0x700019) AM_READ_PORT("SYS") - AM_RANGE(0x70001c, 0x70001d) AM_READ_PORT("UNK") //AM_READ_PORT("SYS") - - AM_RANGE(0x700020, 0x700021) AM_WRITE(enmadaio_oki_bank_w) // oki bank - - AM_RANGE(0x700028, 0x700029) AM_WRITENOP - AM_RANGE(0x70003c, 0x70003d) AM_WRITENOP - AM_RANGE(0x70002c, 0x70002d) AM_WRITENOP -ADDRESS_MAP_END - -ADDRESS_MAP_START(toaplan2_state::snowbro2_68k_mem) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM - AM_RANGE(0x300000, 0x30000d) AM_DEVREADWRITE("gp9001", gp9001vdp_device, gp9001_vdp_r, gp9001_vdp_w) - AM_RANGE(0x400000, 0x400fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x500000, 0x500003) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff) - AM_RANGE(0x600000, 0x600001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) - AM_RANGE(0x700000, 0x700001) AM_READ_PORT("JMPR") - AM_RANGE(0x700004, 0x700005) AM_READ_PORT("DSWA") - AM_RANGE(0x700008, 0x700009) AM_READ_PORT("DSWB") - AM_RANGE(0x70000c, 0x70000d) AM_READ_PORT("IN1") - AM_RANGE(0x700010, 0x700011) AM_READ_PORT("IN2") - AM_RANGE(0x700014, 0x700015) AM_READ_PORT("IN3") - AM_RANGE(0x700018, 0x700019) AM_READ_PORT("IN4") - AM_RANGE(0x70001c, 0x70001d) AM_READ_PORT("SYS") - AM_RANGE(0x700030, 0x700031) AM_WRITE(oki_bankswitch_w) - AM_RANGE(0x700034, 0x700035) AM_WRITE(toaplan2_coin_word_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(toaplan2_state::mahoudai_68k_mem) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM - AM_RANGE(0x218000, 0x21bfff) AM_READWRITE(shared_ram_r, shared_ram_w) - AM_RANGE(0x21c01c, 0x21c01d) AM_WRITE(toaplan2_coin_word_w) - AM_RANGE(0x21c020, 0x21c021) AM_READ_PORT("IN1") - AM_RANGE(0x21c024, 0x21c025) AM_READ_PORT("IN2") - AM_RANGE(0x21c028, 0x21c029) AM_READ_PORT("SYS") - AM_RANGE(0x21c02c, 0x21c02d) AM_READ_PORT("DSWA") - AM_RANGE(0x21c030, 0x21c031) AM_READ_PORT("DSWB") - AM_RANGE(0x21c034, 0x21c035) AM_READ_PORT("JMPR") - AM_RANGE(0x21c03c, 0x21c03d) AM_READ(video_count_r) - AM_RANGE(0x300000, 0x30000d) AM_DEVREADWRITE("gp9001", gp9001vdp_device, gp9001_vdp_r, gp9001_vdp_w) - AM_RANGE(0x400000, 0x400fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x401000, 0x4017ff) AM_RAM // Unused palette RAM - AM_RANGE(0x500000, 0x501fff) AM_RAM_WRITE(toaplan2_tx_videoram_w) AM_SHARE("tx_videoram") - AM_RANGE(0x502000, 0x502fff) AM_RAM AM_SHARE("tx_lineselect") - AM_RANGE(0x503000, 0x5031ff) AM_RAM_WRITE(toaplan2_tx_linescroll_w) AM_SHARE("tx_linescroll") - AM_RANGE(0x503200, 0x503fff) AM_RAM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(toaplan2_state::shippumd_68k_mem) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM - AM_RANGE(0x218000, 0x21bfff) AM_READWRITE(shared_ram_r, shared_ram_w) +void toaplan2_state::enmadaio_68k_mem(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x103fff).ram(); // AM_SHARE("nvram") + map(0x104000, 0x10ffff).ram(); + + map(0x200000, 0x20000d).rw(m_vdp0, FUNC(gp9001vdp_device::gp9001_vdp_r), FUNC(gp9001vdp_device::gp9001_vdp_w)); + map(0x300000, 0x300fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x400000, 0x400003).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)).umask16(0x00ff); + map(0x500001, 0x500001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + + map(0x700000, 0x700001).r(this, FUNC(toaplan2_state::video_count_r)); + + map(0x700004, 0x700005).portr("DSWA"); + map(0x70000c, 0x70000d).portr("MISC2"); + map(0x700010, 0x700011).portr("MISC3"); + map(0x700014, 0x700015).portr("MISC4"); + map(0x700018, 0x700019).portr("SYS"); + map(0x70001c, 0x70001d).portr("UNK"); //AM_READ_PORT("SYS") + + map(0x700020, 0x700021).w(this, FUNC(toaplan2_state::enmadaio_oki_bank_w)); // oki bank + + map(0x700028, 0x700029).nopw(); + map(0x70003c, 0x70003d).nopw(); + map(0x70002c, 0x70002d).nopw(); +} + +void toaplan2_state::snowbro2_68k_mem(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x10ffff).ram(); + map(0x300000, 0x30000d).rw(m_vdp0, FUNC(gp9001vdp_device::gp9001_vdp_r), FUNC(gp9001vdp_device::gp9001_vdp_w)); + map(0x400000, 0x400fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x500000, 0x500003).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)).umask16(0x00ff); + map(0x600001, 0x600001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x700000, 0x700001).portr("JMPR"); + map(0x700004, 0x700005).portr("DSWA"); + map(0x700008, 0x700009).portr("DSWB"); + map(0x70000c, 0x70000d).portr("IN1"); + map(0x700010, 0x700011).portr("IN2"); + map(0x700014, 0x700015).portr("IN3"); + map(0x700018, 0x700019).portr("IN4"); + map(0x70001c, 0x70001d).portr("SYS"); + map(0x700030, 0x700031).w(this, FUNC(toaplan2_state::oki_bankswitch_w)); + map(0x700034, 0x700035).w(this, FUNC(toaplan2_state::toaplan2_coin_word_w)); +} + + +void toaplan2_state::mahoudai_68k_mem(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x10ffff).ram(); + map(0x218000, 0x21bfff).rw(this, FUNC(toaplan2_state::shared_ram_r), FUNC(toaplan2_state::shared_ram_w)); + map(0x21c01c, 0x21c01d).w(this, FUNC(toaplan2_state::toaplan2_coin_word_w)); + map(0x21c020, 0x21c021).portr("IN1"); + map(0x21c024, 0x21c025).portr("IN2"); + map(0x21c028, 0x21c029).portr("SYS"); + map(0x21c02c, 0x21c02d).portr("DSWA"); + map(0x21c030, 0x21c031).portr("DSWB"); + map(0x21c034, 0x21c035).portr("JMPR"); + map(0x21c03c, 0x21c03d).r(this, FUNC(toaplan2_state::video_count_r)); + map(0x300000, 0x30000d).rw(m_vdp0, FUNC(gp9001vdp_device::gp9001_vdp_r), FUNC(gp9001vdp_device::gp9001_vdp_w)); + map(0x400000, 0x400fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x401000, 0x4017ff).ram(); // Unused palette RAM + map(0x500000, 0x501fff).ram().w(this, FUNC(toaplan2_state::toaplan2_tx_videoram_w)).share("tx_videoram"); + map(0x502000, 0x502fff).ram().share("tx_lineselect"); + map(0x503000, 0x5031ff).ram().w(this, FUNC(toaplan2_state::toaplan2_tx_linescroll_w)).share("tx_linescroll"); + map(0x503200, 0x503fff).ram(); +} + + +void toaplan2_state::shippumd_68k_mem(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x100000, 0x10ffff).ram(); + map(0x218000, 0x21bfff).rw(this, FUNC(toaplan2_state::shared_ram_r), FUNC(toaplan2_state::shared_ram_w)); // AM_RANGE(0x21c008, 0x21c009) AM_WRITENOP // ??? - AM_RANGE(0x21c01c, 0x21c01d) AM_WRITE(shippumd_coin_word_w) // Coin count/lock + oki bankswitch - AM_RANGE(0x21c020, 0x21c021) AM_READ_PORT("IN1") - AM_RANGE(0x21c024, 0x21c025) AM_READ_PORT("IN2") - AM_RANGE(0x21c028, 0x21c029) AM_READ_PORT("SYS") - AM_RANGE(0x21c02c, 0x21c02d) AM_READ_PORT("DSWA") - AM_RANGE(0x21c030, 0x21c031) AM_READ_PORT("DSWB") - AM_RANGE(0x21c034, 0x21c035) AM_READ_PORT("JMPR") - AM_RANGE(0x21c03c, 0x21c03d) AM_READ(video_count_r) - AM_RANGE(0x300000, 0x30000d) AM_DEVREADWRITE("gp9001", gp9001vdp_device, gp9001_vdp_r, gp9001_vdp_w) - AM_RANGE(0x400000, 0x400fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x401000, 0x4017ff) AM_RAM // Unused palette RAM - AM_RANGE(0x500000, 0x501fff) AM_RAM_WRITE(toaplan2_tx_videoram_w) AM_SHARE("tx_videoram") - AM_RANGE(0x502000, 0x502fff) AM_RAM AM_SHARE("tx_lineselect") - AM_RANGE(0x503000, 0x5031ff) AM_RAM_WRITE(toaplan2_tx_linescroll_w) AM_SHARE("tx_linescroll") - AM_RANGE(0x503200, 0x503fff) AM_RAM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(toaplan2_state::bgaregga_68k_mem) - AM_RANGE(0x000000, 0x0fffff) AM_ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM - AM_RANGE(0x218000, 0x21bfff) AM_READWRITE(shared_ram_r, shared_ram_w) - AM_RANGE(0x21c01c, 0x21c01d) AM_WRITE(toaplan2_coin_word_w) - AM_RANGE(0x21c020, 0x21c021) AM_READ_PORT("IN1") - AM_RANGE(0x21c024, 0x21c025) AM_READ_PORT("IN2") - AM_RANGE(0x21c028, 0x21c029) AM_READ_PORT("SYS") - AM_RANGE(0x21c02c, 0x21c02d) AM_READ_PORT("DSWA") - AM_RANGE(0x21c030, 0x21c031) AM_READ_PORT("DSWB") - AM_RANGE(0x21c034, 0x21c035) AM_READ_PORT("JMPR") - AM_RANGE(0x21c03c, 0x21c03d) AM_READ(video_count_r) - AM_RANGE(0x300000, 0x30000d) AM_DEVREADWRITE("gp9001", gp9001vdp_device, gp9001_vdp_r, gp9001_vdp_w) - AM_RANGE(0x400000, 0x400fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x500000, 0x501fff) AM_RAM_WRITE(toaplan2_tx_videoram_w) AM_SHARE("tx_videoram") - AM_RANGE(0x502000, 0x502fff) AM_RAM AM_SHARE("tx_lineselect") - AM_RANGE(0x503000, 0x5031ff) AM_RAM_WRITE(toaplan2_tx_linescroll_w) AM_SHARE("tx_linescroll") - AM_RANGE(0x503200, 0x503fff) AM_RAM - AM_RANGE(0x600000, 0x600001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(toaplan2_state::batrider_68k_mem) - AM_RANGE(0x000000, 0x1fffff) AM_ROM + map(0x21c01c, 0x21c01d).w(this, FUNC(toaplan2_state::shippumd_coin_word_w)); // Coin count/lock + oki bankswitch + map(0x21c020, 0x21c021).portr("IN1"); + map(0x21c024, 0x21c025).portr("IN2"); + map(0x21c028, 0x21c029).portr("SYS"); + map(0x21c02c, 0x21c02d).portr("DSWA"); + map(0x21c030, 0x21c031).portr("DSWB"); + map(0x21c034, 0x21c035).portr("JMPR"); + map(0x21c03c, 0x21c03d).r(this, FUNC(toaplan2_state::video_count_r)); + map(0x300000, 0x30000d).rw(m_vdp0, FUNC(gp9001vdp_device::gp9001_vdp_r), FUNC(gp9001vdp_device::gp9001_vdp_w)); + map(0x400000, 0x400fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x401000, 0x4017ff).ram(); // Unused palette RAM + map(0x500000, 0x501fff).ram().w(this, FUNC(toaplan2_state::toaplan2_tx_videoram_w)).share("tx_videoram"); + map(0x502000, 0x502fff).ram().share("tx_lineselect"); + map(0x503000, 0x5031ff).ram().w(this, FUNC(toaplan2_state::toaplan2_tx_linescroll_w)).share("tx_linescroll"); + map(0x503200, 0x503fff).ram(); +} + + +void toaplan2_state::bgaregga_68k_mem(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); + map(0x100000, 0x10ffff).ram(); + map(0x218000, 0x21bfff).rw(this, FUNC(toaplan2_state::shared_ram_r), FUNC(toaplan2_state::shared_ram_w)); + map(0x21c01c, 0x21c01d).w(this, FUNC(toaplan2_state::toaplan2_coin_word_w)); + map(0x21c020, 0x21c021).portr("IN1"); + map(0x21c024, 0x21c025).portr("IN2"); + map(0x21c028, 0x21c029).portr("SYS"); + map(0x21c02c, 0x21c02d).portr("DSWA"); + map(0x21c030, 0x21c031).portr("DSWB"); + map(0x21c034, 0x21c035).portr("JMPR"); + map(0x21c03c, 0x21c03d).r(this, FUNC(toaplan2_state::video_count_r)); + map(0x300000, 0x30000d).rw(m_vdp0, FUNC(gp9001vdp_device::gp9001_vdp_r), FUNC(gp9001vdp_device::gp9001_vdp_w)); + map(0x400000, 0x400fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x500000, 0x501fff).ram().w(this, FUNC(toaplan2_state::toaplan2_tx_videoram_w)).share("tx_videoram"); + map(0x502000, 0x502fff).ram().share("tx_lineselect"); + map(0x503000, 0x5031ff).ram().w(this, FUNC(toaplan2_state::toaplan2_tx_linescroll_w)).share("tx_linescroll"); + map(0x503200, 0x503fff).ram(); + map(0x600001, 0x600001).w(m_soundlatch, FUNC(generic_latch_8_device::write)); +} + + +void toaplan2_state::batrider_68k_mem(address_map &map) +{ + map(0x000000, 0x1fffff).rom(); // actually 200000 - 20ffff is probably all main RAM, and the text and palette RAM are written via DMA - AM_RANGE(0x200000, 0x201fff) AM_RAM_WRITE(toaplan2_tx_videoram_w) AM_SHARE("tx_videoram") - AM_RANGE(0x202000, 0x202fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x203000, 0x2031ff) AM_RAM AM_SHARE("tx_lineselect") - AM_RANGE(0x203200, 0x2033ff) AM_RAM_WRITE(toaplan2_tx_linescroll_w) AM_SHARE("tx_linescroll") - AM_RANGE(0x203400, 0x207fff) AM_RAM AM_SHARE("mainram16") - AM_RANGE(0x208000, 0x20ffff) AM_RAM - AM_RANGE(0x300000, 0x37ffff) AM_READ(batrider_z80rom_r) - AM_RANGE(0x400000, 0x40000d) AM_DEVREADWRITE("gp9001", gp9001vdp_device, gp9001_vdp_alt_r, gp9001_vdp_alt_w) - AM_RANGE(0x500000, 0x500001) AM_READ_PORT("IN") - AM_RANGE(0x500002, 0x500003) AM_READ_PORT("SYS-DSW") - AM_RANGE(0x500004, 0x500005) AM_READ_PORT("DSW") - AM_RANGE(0x500006, 0x500007) AM_READ(video_count_r) - AM_RANGE(0x500008, 0x500009) AM_DEVREAD8("soundlatch3", generic_latch_8_device, read, 0x00ff) - AM_RANGE(0x50000a, 0x50000b) AM_DEVREAD8("soundlatch4", generic_latch_8_device, read, 0x00ff) - AM_RANGE(0x50000c, 0x50000d) AM_READ(batrider_z80_busack_r) - AM_RANGE(0x500010, 0x500011) AM_WRITE(toaplan2_coin_word_w) - AM_RANGE(0x500020, 0x500021) AM_WRITE(batrider_soundlatch_w) - AM_RANGE(0x500022, 0x500023) AM_WRITE(batrider_soundlatch2_w) - AM_RANGE(0x500024, 0x500025) AM_WRITE(batrider_unknown_sound_w) - AM_RANGE(0x500026, 0x500027) AM_WRITE(batrider_clear_sndirq_w) - AM_RANGE(0x500060, 0x500061) AM_WRITE(batrider_z80_busreq_w) - AM_RANGE(0x500080, 0x500081) AM_WRITE(batrider_textdata_dma_w) - AM_RANGE(0x500082, 0x500083) AM_WRITE(batrider_unknown_dma_w) - AM_RANGE(0x5000c0, 0x5000cf) AM_WRITE(batrider_objectbank_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(toaplan2_state::bbakraid_68k_mem) - AM_RANGE(0x000000, 0x1fffff) AM_ROM + map(0x200000, 0x201fff).ram().w(this, FUNC(toaplan2_state::toaplan2_tx_videoram_w)).share("tx_videoram"); + map(0x202000, 0x202fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x203000, 0x2031ff).ram().share("tx_lineselect"); + map(0x203200, 0x2033ff).ram().w(this, FUNC(toaplan2_state::toaplan2_tx_linescroll_w)).share("tx_linescroll"); + map(0x203400, 0x207fff).ram().share("mainram16"); + map(0x208000, 0x20ffff).ram(); + map(0x300000, 0x37ffff).r(this, FUNC(toaplan2_state::batrider_z80rom_r)); + map(0x400000, 0x40000d).rw(m_vdp0, FUNC(gp9001vdp_device::gp9001_vdp_alt_r), FUNC(gp9001vdp_device::gp9001_vdp_alt_w)); + map(0x500000, 0x500001).portr("IN"); + map(0x500002, 0x500003).portr("SYS-DSW"); + map(0x500004, 0x500005).portr("DSW"); + map(0x500006, 0x500007).r(this, FUNC(toaplan2_state::video_count_r)); + map(0x500009, 0x500009).r("soundlatch3", FUNC(generic_latch_8_device::read)); + map(0x50000b, 0x50000b).r("soundlatch4", FUNC(generic_latch_8_device::read)); + map(0x50000c, 0x50000d).r(this, FUNC(toaplan2_state::batrider_z80_busack_r)); + map(0x500010, 0x500011).w(this, FUNC(toaplan2_state::toaplan2_coin_word_w)); + map(0x500020, 0x500021).w(this, FUNC(toaplan2_state::batrider_soundlatch_w)); + map(0x500022, 0x500023).w(this, FUNC(toaplan2_state::batrider_soundlatch2_w)); + map(0x500024, 0x500025).w(this, FUNC(toaplan2_state::batrider_unknown_sound_w)); + map(0x500026, 0x500027).w(this, FUNC(toaplan2_state::batrider_clear_sndirq_w)); + map(0x500060, 0x500061).w(this, FUNC(toaplan2_state::batrider_z80_busreq_w)); + map(0x500080, 0x500081).w(this, FUNC(toaplan2_state::batrider_textdata_dma_w)); + map(0x500082, 0x500083).w(this, FUNC(toaplan2_state::batrider_unknown_dma_w)); + map(0x5000c0, 0x5000cf).w(this, FUNC(toaplan2_state::batrider_objectbank_w)); +} + + +void toaplan2_state::bbakraid_68k_mem(address_map &map) +{ + map(0x000000, 0x1fffff).rom(); // actually 200000 - 20ffff is probably all main RAM, and the text and palette RAM are written via DMA - AM_RANGE(0x200000, 0x201fff) AM_RAM_WRITE(toaplan2_tx_videoram_w) AM_SHARE("tx_videoram") - AM_RANGE(0x202000, 0x202fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x203000, 0x2031ff) AM_RAM AM_SHARE("tx_lineselect") - AM_RANGE(0x203200, 0x2033ff) AM_RAM_WRITE(toaplan2_tx_linescroll_w) AM_SHARE("tx_linescroll") - AM_RANGE(0x203400, 0x207fff) AM_RAM AM_SHARE("mainram16") - AM_RANGE(0x208000, 0x20ffff) AM_RAM - AM_RANGE(0x300000, 0x33ffff) AM_READ(batrider_z80rom_r) - AM_RANGE(0x400000, 0x40000d) AM_DEVREADWRITE("gp9001", gp9001vdp_device, gp9001_vdp_alt_r, gp9001_vdp_alt_w) - AM_RANGE(0x500000, 0x500001) AM_READ_PORT("IN") - AM_RANGE(0x500002, 0x500003) AM_READ_PORT("SYS-DSW") - AM_RANGE(0x500004, 0x500005) AM_READ_PORT("DSW") - AM_RANGE(0x500006, 0x500007) AM_READ(video_count_r) - AM_RANGE(0x500008, 0x500009) AM_WRITE(toaplan2_coin_word_w) - AM_RANGE(0x500010, 0x500011) AM_DEVREAD8("soundlatch3", generic_latch_8_device, read, 0x00ff) - AM_RANGE(0x500012, 0x500013) AM_DEVREAD8("soundlatch4", generic_latch_8_device, read, 0x00ff) - AM_RANGE(0x500014, 0x500015) AM_WRITE(batrider_soundlatch_w) - AM_RANGE(0x500016, 0x500017) AM_WRITE(batrider_soundlatch2_w) - AM_RANGE(0x500018, 0x500019) AM_READ(bbakraid_eeprom_r) - AM_RANGE(0x50001a, 0x50001b) AM_WRITE(batrider_unknown_sound_w) - AM_RANGE(0x50001c, 0x50001d) AM_WRITE(batrider_clear_sndirq_w) - AM_RANGE(0x50001e, 0x50001f) AM_WRITE(bbakraid_eeprom_w) - AM_RANGE(0x500080, 0x500081) AM_WRITE(batrider_textdata_dma_w) - AM_RANGE(0x500082, 0x500083) AM_WRITE(batrider_unknown_dma_w) - AM_RANGE(0x5000c0, 0x5000cf) AM_WRITE(batrider_objectbank_w) -ADDRESS_MAP_END - - - -ADDRESS_MAP_START(toaplan2_state::pipibibs_sound_z80_mem) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("shared_ram") - AM_RANGE(0xe000, 0xe001) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(toaplan2_state::raizing_sound_z80_mem) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xdfff) AM_RAM AM_SHARE("shared_ram") - AM_RANGE(0xe000, 0xe001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0xe004, 0xe004) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0xe00e, 0xe00e) AM_WRITE(toaplan2_coin_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(toaplan2_state::bgaregga_sound_z80_mem) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xdfff) AM_RAM AM_SHARE("shared_ram") - AM_RANGE(0xe000, 0xe001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0xe004, 0xe004) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0xe006, 0xe008) AM_WRITE(raizing_oki_bankswitch_w) - AM_RANGE(0xe00a, 0xe00a) AM_WRITE(raizing_z80_bankswitch_w) - AM_RANGE(0xe00c, 0xe00c) AM_DEVWRITE("soundlatch", generic_latch_8_device, acknowledge_w) - AM_RANGE(0xe01c, 0xe01c) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xe01d, 0xe01d) AM_READ(bgaregga_E01D_r) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(toaplan2_state::batrider_sound_z80_mem) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") - AM_RANGE(0xc000, 0xdfff) AM_RAM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(toaplan2_state::batrider_sound_z80_port) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x40, 0x40) AM_DEVWRITE("soundlatch3", generic_latch_8_device, write) - AM_RANGE(0x42, 0x42) AM_DEVWRITE("soundlatch4", generic_latch_8_device, write) - AM_RANGE(0x44, 0x44) AM_WRITE(batrider_sndirq_w) - AM_RANGE(0x46, 0x46) AM_WRITE(batrider_clear_nmi_w) - AM_RANGE(0x48, 0x48) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x4a, 0x4a) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) - AM_RANGE(0x80, 0x81) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0x82, 0x82) AM_DEVREADWRITE("oki1", okim6295_device, read, write) - AM_RANGE(0x84, 0x84) AM_DEVREADWRITE("oki2", okim6295_device, read, write) - AM_RANGE(0x88, 0x88) AM_WRITE(raizing_z80_bankswitch_w) - AM_RANGE(0xc0, 0xc6) AM_WRITE(raizing_oki_bankswitch_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(toaplan2_state::bbakraid_sound_z80_mem) - AM_RANGE(0x0000, 0xbfff) AM_ROM // No banking? ROM only contains code and data up to 0x28DC - AM_RANGE(0xc000, 0xffff) AM_RAM -ADDRESS_MAP_END - - -ADDRESS_MAP_START(toaplan2_state::bbakraid_sound_z80_port) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x40, 0x40) AM_DEVWRITE("soundlatch3", generic_latch_8_device, write) - AM_RANGE(0x42, 0x42) AM_DEVWRITE("soundlatch4", generic_latch_8_device, write) - AM_RANGE(0x44, 0x44) AM_WRITE(batrider_sndirq_w) - AM_RANGE(0x46, 0x46) AM_WRITE(batrider_clear_nmi_w) - AM_RANGE(0x48, 0x48) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x4a, 0x4a) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) - AM_RANGE(0x80, 0x81) AM_DEVREADWRITE("ymz", ymz280b_device, read, write) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(toaplan2_state::v25_mem) - AM_RANGE(0x00000, 0x00001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0x00004, 0x00004) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0x80000, 0x87fff) AM_MIRROR(0x78000) AM_RAM AM_SHARE("shared_ram") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(toaplan2_state::kbash_v25_mem) - AM_RANGE(0x00000, 0x007ff) AM_RAM AM_SHARE("shared_ram") - AM_RANGE(0x04000, 0x04001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0x04002, 0x04002) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0x80000, 0x87fff) AM_MIRROR(0x78000) AM_ROM AM_REGION("audiocpu", 0) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(toaplan2_state::fixeight_v25_mem) - AM_RANGE(0x00000, 0x00000) AM_READ_PORT("IN1") - AM_RANGE(0x00002, 0x00002) AM_READ_PORT("IN2") - AM_RANGE(0x00004, 0x00004) AM_READ_PORT("IN3") - AM_RANGE(0x0000a, 0x0000b) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0x0000c, 0x0000c) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0x80000, 0x87fff) AM_MIRROR(0x78000) AM_RAM AM_SHARE("shared_ram") -ADDRESS_MAP_END + map(0x200000, 0x201fff).ram().w(this, FUNC(toaplan2_state::toaplan2_tx_videoram_w)).share("tx_videoram"); + map(0x202000, 0x202fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x203000, 0x2031ff).ram().share("tx_lineselect"); + map(0x203200, 0x2033ff).ram().w(this, FUNC(toaplan2_state::toaplan2_tx_linescroll_w)).share("tx_linescroll"); + map(0x203400, 0x207fff).ram().share("mainram16"); + map(0x208000, 0x20ffff).ram(); + map(0x300000, 0x33ffff).r(this, FUNC(toaplan2_state::batrider_z80rom_r)); + map(0x400000, 0x40000d).rw(m_vdp0, FUNC(gp9001vdp_device::gp9001_vdp_alt_r), FUNC(gp9001vdp_device::gp9001_vdp_alt_w)); + map(0x500000, 0x500001).portr("IN"); + map(0x500002, 0x500003).portr("SYS-DSW"); + map(0x500004, 0x500005).portr("DSW"); + map(0x500006, 0x500007).r(this, FUNC(toaplan2_state::video_count_r)); + map(0x500008, 0x500009).w(this, FUNC(toaplan2_state::toaplan2_coin_word_w)); + map(0x500011, 0x500011).r("soundlatch3", FUNC(generic_latch_8_device::read)); + map(0x500013, 0x500013).r("soundlatch4", FUNC(generic_latch_8_device::read)); + map(0x500014, 0x500015).w(this, FUNC(toaplan2_state::batrider_soundlatch_w)); + map(0x500016, 0x500017).w(this, FUNC(toaplan2_state::batrider_soundlatch2_w)); + map(0x500018, 0x500019).r(this, FUNC(toaplan2_state::bbakraid_eeprom_r)); + map(0x50001a, 0x50001b).w(this, FUNC(toaplan2_state::batrider_unknown_sound_w)); + map(0x50001c, 0x50001d).w(this, FUNC(toaplan2_state::batrider_clear_sndirq_w)); + map(0x50001e, 0x50001f).w(this, FUNC(toaplan2_state::bbakraid_eeprom_w)); + map(0x500080, 0x500081).w(this, FUNC(toaplan2_state::batrider_textdata_dma_w)); + map(0x500082, 0x500083).w(this, FUNC(toaplan2_state::batrider_unknown_dma_w)); + map(0x5000c0, 0x5000cf).w(this, FUNC(toaplan2_state::batrider_objectbank_w)); +} + + + +void toaplan2_state::pipibibs_sound_z80_mem(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram().share("shared_ram"); + map(0xe000, 0xe001).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write)); +} + + +void toaplan2_state::raizing_sound_z80_mem(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xdfff).ram().share("shared_ram"); + map(0xe000, 0xe001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0xe004, 0xe004).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xe00e, 0xe00e).w(this, FUNC(toaplan2_state::toaplan2_coin_w)); +} + + +void toaplan2_state::bgaregga_sound_z80_mem(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xc000, 0xdfff).ram().share("shared_ram"); + map(0xe000, 0xe001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0xe004, 0xe004).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xe006, 0xe008).w(this, FUNC(toaplan2_state::raizing_oki_bankswitch_w)); + map(0xe00a, 0xe00a).w(this, FUNC(toaplan2_state::raizing_z80_bankswitch_w)); + map(0xe00c, 0xe00c).w(m_soundlatch, FUNC(generic_latch_8_device::acknowledge_w)); + map(0xe01c, 0xe01c).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0xe01d, 0xe01d).r(this, FUNC(toaplan2_state::bgaregga_E01D_r)); +} + + +void toaplan2_state::batrider_sound_z80_mem(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("bank1"); + map(0xc000, 0xdfff).ram(); +} + + +void toaplan2_state::batrider_sound_z80_port(address_map &map) +{ + map.global_mask(0xff); + map(0x40, 0x40).w("soundlatch3", FUNC(generic_latch_8_device::write)); + map(0x42, 0x42).w("soundlatch4", FUNC(generic_latch_8_device::write)); + map(0x44, 0x44).w(this, FUNC(toaplan2_state::batrider_sndirq_w)); + map(0x46, 0x46).w(this, FUNC(toaplan2_state::batrider_clear_nmi_w)); + map(0x48, 0x48).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x4a, 0x4a).r(m_soundlatch2, FUNC(generic_latch_8_device::read)); + map(0x80, 0x81).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x82, 0x82).rw(m_oki1, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x84, 0x84).rw("oki2", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x88, 0x88).w(this, FUNC(toaplan2_state::raizing_z80_bankswitch_w)); + map(0xc0, 0xc6).w(this, FUNC(toaplan2_state::raizing_oki_bankswitch_w)); +} + +void toaplan2_state::bbakraid_sound_z80_mem(address_map &map) +{ + map(0x0000, 0xbfff).rom(); // No banking? ROM only contains code and data up to 0x28DC + map(0xc000, 0xffff).ram(); +} + + +void toaplan2_state::bbakraid_sound_z80_port(address_map &map) +{ + map.global_mask(0xff); + map(0x40, 0x40).w("soundlatch3", FUNC(generic_latch_8_device::write)); + map(0x42, 0x42).w("soundlatch4", FUNC(generic_latch_8_device::write)); + map(0x44, 0x44).w(this, FUNC(toaplan2_state::batrider_sndirq_w)); + map(0x46, 0x46).w(this, FUNC(toaplan2_state::batrider_clear_nmi_w)); + map(0x48, 0x48).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0x4a, 0x4a).r(m_soundlatch2, FUNC(generic_latch_8_device::read)); + map(0x80, 0x81).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)); +} + + +void toaplan2_state::v25_mem(address_map &map) +{ + map(0x00000, 0x00001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x00004, 0x00004).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x80000, 0x87fff).mirror(0x78000).ram().share("shared_ram"); +} + + +void toaplan2_state::kbash_v25_mem(address_map &map) +{ + map(0x00000, 0x007ff).ram().share("shared_ram"); + map(0x04000, 0x04001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x04002, 0x04002).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x80000, 0x87fff).mirror(0x78000).rom().region("audiocpu", 0); +} + + +void toaplan2_state::fixeight_v25_mem(address_map &map) +{ + map(0x00000, 0x00000).portr("IN1"); + map(0x00002, 0x00002).portr("IN2"); + map(0x00004, 0x00004).portr("IN3"); + map(0x0000a, 0x0000b).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x0000c, 0x0000c).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0x80000, 0x87fff).mirror(0x78000).ram().share("shared_ram"); +} -ADDRESS_MAP_START(toaplan2_state::vfive_v25_mem) - AM_RANGE(0x00000, 0x00001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0x80000, 0x87fff) AM_MIRROR(0x78000) AM_RAM AM_SHARE("shared_ram") -ADDRESS_MAP_END - - -ADDRESS_MAP_START(toaplan2_state::fixeightbl_oki) - AM_RANGE(0x00000, 0x2ffff) AM_ROM - AM_RANGE(0x30000, 0x3ffff) AM_ROMBANK("bank1") -ADDRESS_MAP_END - -ADDRESS_MAP_START(toaplan2_state::enmadaio_oki) - AM_RANGE(0x00000, 0x3ffff) AM_ROMBANK("bank1") -ADDRESS_MAP_END + +void toaplan2_state::vfive_v25_mem(address_map &map) +{ + map(0x00000, 0x00001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0x80000, 0x87fff).mirror(0x78000).ram().share("shared_ram"); +} + + +void toaplan2_state::fixeightbl_oki(address_map &map) +{ + map(0x00000, 0x2ffff).rom(); + map(0x30000, 0x3ffff).bankr("bank1"); +} + +void toaplan2_state::enmadaio_oki(address_map &map) +{ + map(0x00000, 0x3ffff).bankr("bank1"); +} @@ -1428,39 +1462,42 @@ READ8_MEMBER(toaplan2_state::tekipaki_cmdavailable_r) else return 0x00; }; -ADDRESS_MAP_START(toaplan2_state::hd647180_mem_map) - AM_RANGE(0x00000, 0x03fff) AM_ROM /* Internal 16k byte ROM */ - AM_RANGE(0x0fe00, 0x0ffff) AM_RAM /* Internal 512 byte RAM */ -ADDRESS_MAP_END +void toaplan2_state::hd647180_mem_map(address_map &map) +{ + map(0x00000, 0x03fff).rom(); /* Internal 16k byte ROM */ + map(0x0fe00, 0x0ffff).ram(); /* Internal 512 byte RAM */ +} -ADDRESS_MAP_START(toaplan2_state::hd647180_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) +void toaplan2_state::hd647180_io_map(address_map &map) +{ + map.global_mask(0xff); - AM_RANGE(0x60, 0x60) AM_READ(tekipaki_cmdavailable_r) - AM_RANGE(0x84, 0x84) AM_DEVREAD("soundlatch", generic_latch_8_device, read) + map(0x60, 0x60).r(this, FUNC(toaplan2_state::tekipaki_cmdavailable_r)); + map(0x84, 0x84).r(m_soundlatch, FUNC(generic_latch_8_device::read)); - AM_RANGE(0x82, 0x82) AM_DEVREADWRITE("ymsnd", ym3812_device, status_port_r, control_port_w) - AM_RANGE(0x83, 0x83) AM_DEVREADWRITE("ymsnd", ym3812_device, read_port_r, write_port_w) -ADDRESS_MAP_END + map(0x82, 0x82).rw("ymsnd", FUNC(ym3812_device::status_port_r), FUNC(ym3812_device::control_port_w)); + map(0x83, 0x83).rw("ymsnd", FUNC(ym3812_device::read_port_r), FUNC(ym3812_device::write_port_w)); +} -ADDRESS_MAP_START(toaplan2_state::ghox_hd647180_mem_map) - AM_RANGE(0x00000, 0x03fff) AM_ROM // Internal 16k byte ROM - AM_RANGE(0x0fe00, 0x0ffff) AM_RAM // Internal 512 byte RAM - AM_RANGE(0x3fe00, 0x3ffff) AM_RAM // Relocated internal RAM (RMCR = 30) +void toaplan2_state::ghox_hd647180_mem_map(address_map &map) +{ + map(0x00000, 0x03fff).rom(); // Internal 16k byte ROM + map(0x0fe00, 0x0ffff).ram(); // Internal 512 byte RAM + map(0x3fe00, 0x3ffff).ram(); // Relocated internal RAM (RMCR = 30) - AM_RANGE(0x40000, 0x407ff) AM_RAM AM_SHARE("shared_ram") + map(0x40000, 0x407ff).ram().share("shared_ram"); - AM_RANGE(0x80002, 0x80002) AM_READ_PORT("DSWA") - AM_RANGE(0x80004, 0x80004) AM_READ_PORT("DSWB") - AM_RANGE(0x80006, 0x80006) AM_READNOP // nothing? - AM_RANGE(0x80008, 0x80008) AM_READ_PORT("IN1") - AM_RANGE(0x8000a, 0x8000a) AM_READ_PORT("IN2") + map(0x80002, 0x80002).portr("DSWA"); + map(0x80004, 0x80004).portr("DSWB"); + map(0x80006, 0x80006).nopr(); // nothing? + map(0x80008, 0x80008).portr("IN1"); + map(0x8000a, 0x8000a).portr("IN2"); - AM_RANGE(0x8000c, 0x8000e) AM_READ_PORT("SYS") + map(0x8000c, 0x8000e).portr("SYS"); - AM_RANGE(0x8000e, 0x8000f) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) -ADDRESS_MAP_END + map(0x8000e, 0x8000f).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); +} /***************************************************************************** Input Port definitions |