summaryrefslogtreecommitdiffstats
path: root/src/mame/drivers/toaplan2.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/toaplan2.cpp')
-rw-r--r--src/mame/drivers/toaplan2.cpp1137
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