summaryrefslogtreecommitdiffstats
path: root/src/mame/drivers/megasys1.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/megasys1.cpp')
-rw-r--r--src/mame/drivers/megasys1.cpp317
1 files changed, 165 insertions, 152 deletions
diff --git a/src/mame/drivers/megasys1.cpp b/src/mame/drivers/megasys1.cpp
index 2ca940dc25f..ec7458bf35c 100644
--- a/src/mame/drivers/megasys1.cpp
+++ b/src/mame/drivers/megasys1.cpp
@@ -201,34 +201,36 @@ TIMER_DEVICE_CALLBACK_MEMBER(megasys1_state::megasys1A_iganinju_scanline)
m_maincpu->set_input_line(2, HOLD_LINE);
}
-ADDRESS_MAP_START(megasys1_state::megasys1Z_map)
- ADDRESS_MAP_GLOBAL_MASK(0xfffff)
- AM_RANGE(0x000000, 0x05ffff) AM_ROM
- AM_RANGE(0x080000, 0x080001) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x080002, 0x080003) AM_READ_PORT("P1")
- AM_RANGE(0x080004, 0x080005) AM_READ_PORT("P2")
- AM_RANGE(0x080006, 0x080007) AM_READ_PORT("DSW")
- AM_RANGE(0x084200, 0x084205) AM_DEVWRITE("scroll0", megasys1_tilemap_device, scroll_w)
- AM_RANGE(0x084208, 0x08420d) AM_DEVWRITE("scroll1", megasys1_tilemap_device, scroll_w)
- AM_RANGE(0x084300, 0x084301) AM_WRITE(screen_flag_w)
- AM_RANGE(0x084308, 0x084309) AM_WRITE(soundlatch_z_w)
- AM_RANGE(0x088000, 0x0887ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x08e000, 0x08ffff) AM_RAM AM_SHARE("objectram")
- AM_RANGE(0x090000, 0x093fff) AM_RAM_DEVWRITE("scroll0", megasys1_tilemap_device, write) AM_SHARE("scroll0")
- AM_RANGE(0x094000, 0x097fff) AM_RAM_DEVWRITE("scroll1", megasys1_tilemap_device, write) AM_SHARE("scroll1")
- AM_RANGE(0x0f0000, 0x0fffff) AM_RAM_WRITE(ram_w) AM_SHARE("ram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(megasys1_state::megasys1A_map)
- ADDRESS_MAP_GLOBAL_MASK(0xfffff)
- AM_IMPORT_FROM(megasys1Z_map)
- AM_RANGE(0x080008, 0x080009) AM_DEVREAD("soundlatch2", generic_latch_16_device, read) /* from sound cpu */
- AM_RANGE(0x084000, 0x084001) AM_WRITE(active_layers_w)
- AM_RANGE(0x084008, 0x08400d) AM_DEVWRITE("scroll2", megasys1_tilemap_device, scroll_w)
- AM_RANGE(0x084100, 0x084101) AM_READWRITE(sprite_flag_r, sprite_flag_w)
- AM_RANGE(0x084308, 0x084309) AM_WRITE(soundlatch_w)
- AM_RANGE(0x098000, 0x09bfff) AM_RAM_DEVWRITE("scroll2", megasys1_tilemap_device, write) AM_SHARE("scroll2")
-ADDRESS_MAP_END
+void megasys1_state::megasys1Z_map(address_map &map)
+{
+ map.global_mask(0xfffff);
+ map(0x000000, 0x05ffff).rom();
+ map(0x080000, 0x080001).portr("SYSTEM");
+ map(0x080002, 0x080003).portr("P1");
+ map(0x080004, 0x080005).portr("P2");
+ map(0x080006, 0x080007).portr("DSW");
+ map(0x084200, 0x084205).w("scroll0", FUNC(megasys1_tilemap_device::scroll_w));
+ map(0x084208, 0x08420d).w("scroll1", FUNC(megasys1_tilemap_device::scroll_w));
+ map(0x084300, 0x084301).w(this, FUNC(megasys1_state::screen_flag_w));
+ map(0x084308, 0x084309).w(this, FUNC(megasys1_state::soundlatch_z_w));
+ map(0x088000, 0x0887ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x08e000, 0x08ffff).ram().share("objectram");
+ map(0x090000, 0x093fff).ram().w("scroll0", FUNC(megasys1_tilemap_device::write)).share("scroll0");
+ map(0x094000, 0x097fff).ram().w("scroll1", FUNC(megasys1_tilemap_device::write)).share("scroll1");
+ map(0x0f0000, 0x0fffff).ram().w(this, FUNC(megasys1_state::ram_w)).share("ram");
+}
+
+void megasys1_state::megasys1A_map(address_map &map)
+{
+ map.global_mask(0xfffff);
+ megasys1Z_map(map);
+ map(0x080008, 0x080009).r(m_soundlatch2, FUNC(generic_latch_16_device::read)); /* from sound cpu */
+ map(0x084000, 0x084001).w(this, FUNC(megasys1_state::active_layers_w));
+ map(0x084008, 0x08400d).w("scroll2", FUNC(megasys1_tilemap_device::scroll_w));
+ map(0x084100, 0x084101).rw(this, FUNC(megasys1_state::sprite_flag_r), FUNC(megasys1_state::sprite_flag_w));
+ map(0x084308, 0x084309).w(this, FUNC(megasys1_state::soundlatch_w));
+ map(0x098000, 0x09bfff).ram().w("scroll2", FUNC(megasys1_tilemap_device::write)).share("scroll2");
+}
/***************************************************************************
[ Main CPU - System B ]
@@ -299,48 +301,51 @@ WRITE16_MEMBER(megasys1_state::ip_select_w) // TO MCU
}
-ADDRESS_MAP_START(megasys1_state::megasys1B_map)
- ADDRESS_MAP_GLOBAL_MASK(0xfffff)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x044000, 0x044001) AM_WRITE(active_layers_w)
- AM_RANGE(0x044008, 0x04400d) AM_DEVWRITE("scroll2", megasys1_tilemap_device, scroll_w)
- AM_RANGE(0x044100, 0x044101) AM_READWRITE(sprite_flag_r, sprite_flag_w)
- AM_RANGE(0x044200, 0x044205) AM_DEVWRITE("scroll0", megasys1_tilemap_device, scroll_w)
- AM_RANGE(0x044208, 0x04420d) AM_DEVWRITE("scroll1", megasys1_tilemap_device, scroll_w)
- AM_RANGE(0x044300, 0x044301) AM_WRITE(screen_flag_w)
- AM_RANGE(0x044308, 0x044309) AM_WRITE(soundlatch_w)
- AM_RANGE(0x048000, 0x0487ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x04e000, 0x04ffff) AM_RAM AM_SHARE("objectram")
- AM_RANGE(0x050000, 0x053fff) AM_RAM_DEVWRITE("scroll0", megasys1_tilemap_device, write) AM_SHARE("scroll0")
- AM_RANGE(0x054000, 0x057fff) AM_RAM_DEVWRITE("scroll1", megasys1_tilemap_device, write) AM_SHARE("scroll1")
- AM_RANGE(0x058000, 0x05bfff) AM_RAM_DEVWRITE("scroll2", megasys1_tilemap_device, write) AM_SHARE("scroll2")
- AM_RANGE(0x060000, 0x07ffff) AM_RAM_WRITE(ram_w) AM_SHARE("ram")
- AM_RANGE(0x080000, 0x0bffff) AM_ROM
- AM_RANGE(0x0e0000, 0x0e0001) AM_READWRITE(ip_select_r,ip_select_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(megasys1_state::megasys1B_edfbl_map)
- ADDRESS_MAP_GLOBAL_MASK(0xfffff)
- AM_IMPORT_FROM(megasys1B_map)
- AM_RANGE(0x0e0002, 0x0e0003) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x0e0004, 0x0e0005) AM_READ_PORT("P1")
- AM_RANGE(0x0e0006, 0x0e0007) AM_READ_PORT("P2")
- AM_RANGE(0x0e0008, 0x0e0009) AM_READ_PORT("DSW1")
- AM_RANGE(0x0e000a, 0x0e000b) AM_READ_PORT("DSW2")
+void megasys1_state::megasys1B_map(address_map &map)
+{
+ map.global_mask(0xfffff);
+ map(0x000000, 0x03ffff).rom();
+ map(0x044000, 0x044001).w(this, FUNC(megasys1_state::active_layers_w));
+ map(0x044008, 0x04400d).w("scroll2", FUNC(megasys1_tilemap_device::scroll_w));
+ map(0x044100, 0x044101).rw(this, FUNC(megasys1_state::sprite_flag_r), FUNC(megasys1_state::sprite_flag_w));
+ map(0x044200, 0x044205).w("scroll0", FUNC(megasys1_tilemap_device::scroll_w));
+ map(0x044208, 0x04420d).w("scroll1", FUNC(megasys1_tilemap_device::scroll_w));
+ map(0x044300, 0x044301).w(this, FUNC(megasys1_state::screen_flag_w));
+ map(0x044308, 0x044309).w(this, FUNC(megasys1_state::soundlatch_w));
+ map(0x048000, 0x0487ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x04e000, 0x04ffff).ram().share("objectram");
+ map(0x050000, 0x053fff).ram().w("scroll0", FUNC(megasys1_tilemap_device::write)).share("scroll0");
+ map(0x054000, 0x057fff).ram().w("scroll1", FUNC(megasys1_tilemap_device::write)).share("scroll1");
+ map(0x058000, 0x05bfff).ram().w("scroll2", FUNC(megasys1_tilemap_device::write)).share("scroll2");
+ map(0x060000, 0x07ffff).ram().w(this, FUNC(megasys1_state::ram_w)).share("ram");
+ map(0x080000, 0x0bffff).rom();
+ map(0x0e0000, 0x0e0001).rw(this, FUNC(megasys1_state::ip_select_r), FUNC(megasys1_state::ip_select_w));
+}
+
+void megasys1_state::megasys1B_edfbl_map(address_map &map)
+{
+ map.global_mask(0xfffff);
+ megasys1B_map(map);
+ map(0x0e0002, 0x0e0003).portr("SYSTEM");
+ map(0x0e0004, 0x0e0005).portr("P1");
+ map(0x0e0006, 0x0e0007).portr("P2");
+ map(0x0e0008, 0x0e0009).portr("DSW1");
+ map(0x0e000a, 0x0e000b).portr("DSW2");
//AM_RANGE(0x0e000e, 0x0e000f) AM_WRITE(soundlatch_w)
-ADDRESS_MAP_END
+}
-ADDRESS_MAP_START(megasys1_state::megasys1B_monkelf_map)
- ADDRESS_MAP_GLOBAL_MASK(0xfffff)
- AM_IMPORT_FROM(megasys1B_map)
- AM_RANGE(0x044200, 0x044205) AM_WRITE(monkelf_scroll0_w)
- AM_RANGE(0x044208, 0x04420d) AM_WRITE(monkelf_scroll1_w)
- AM_RANGE(0x0e0002, 0x0e0003) AM_READ_PORT("P1")
- AM_RANGE(0x0e0004, 0x0e0005) AM_READ_PORT("P2")
- AM_RANGE(0x0e0006, 0x0e0007) AM_READ_PORT("DSW1")
- AM_RANGE(0x0e0008, 0x0e0009) AM_READ_PORT("DSW2")
- AM_RANGE(0x0e000a, 0x0e000b) AM_READ_PORT("SYSTEM")
-ADDRESS_MAP_END
+void megasys1_state::megasys1B_monkelf_map(address_map &map)
+{
+ map.global_mask(0xfffff);
+ megasys1B_map(map);
+ map(0x044200, 0x044205).w(this, FUNC(megasys1_state::monkelf_scroll0_w));
+ map(0x044208, 0x04420d).w(this, FUNC(megasys1_state::monkelf_scroll1_w));
+ map(0x0e0002, 0x0e0003).portr("P1");
+ map(0x0e0004, 0x0e0005).portr("P2");
+ map(0x0e0006, 0x0e0007).portr("DSW1");
+ map(0x0e0008, 0x0e0009).portr("DSW2");
+ map(0x0e000a, 0x0e000b).portr("SYSTEM");
+}
@@ -364,26 +369,27 @@ WRITE16_MEMBER(megasys1_state::ram_w )
}
-ADDRESS_MAP_START(megasys1_state::megasys1C_map)
- ADDRESS_MAP_GLOBAL_MASK(0x1fffff)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x0c2000, 0x0c2005) AM_DEVWRITE("scroll0", megasys1_tilemap_device, scroll_w)
- AM_RANGE(0x0c2008, 0x0c200d) AM_DEVWRITE("scroll1", megasys1_tilemap_device, scroll_w)
- AM_RANGE(0x0c2100, 0x0c2105) AM_DEVWRITE("scroll2", megasys1_tilemap_device, scroll_w)
- AM_RANGE(0x0c2108, 0x0c2109) AM_WRITE(sprite_bank_w)
- AM_RANGE(0x0c2200, 0x0c2201) AM_READWRITE(sprite_flag_r, sprite_flag_w)
- AM_RANGE(0x0c2208, 0x0c2209) AM_WRITE(active_layers_w)
- AM_RANGE(0x0c2308, 0x0c2309) AM_WRITE(screen_flag_w)
- AM_RANGE(0x0c8000, 0x0c8001) AM_DEVREAD("soundlatch2", generic_latch_16_device, read) AM_WRITE(soundlatch_c_w)
- AM_RANGE(0x0d2000, 0x0d3fff) AM_RAM AM_SHARE("objectram")
- AM_RANGE(0x0d8000, 0x0d8001) AM_READWRITE(ip_select_r,ip_select_w)
+void megasys1_state::megasys1C_map(address_map &map)
+{
+ map.global_mask(0x1fffff);
+ map(0x000000, 0x07ffff).rom();
+ map(0x0c2000, 0x0c2005).w("scroll0", FUNC(megasys1_tilemap_device::scroll_w));
+ map(0x0c2008, 0x0c200d).w("scroll1", FUNC(megasys1_tilemap_device::scroll_w));
+ map(0x0c2100, 0x0c2105).w("scroll2", FUNC(megasys1_tilemap_device::scroll_w));
+ map(0x0c2108, 0x0c2109).w(this, FUNC(megasys1_state::sprite_bank_w));
+ map(0x0c2200, 0x0c2201).rw(this, FUNC(megasys1_state::sprite_flag_r), FUNC(megasys1_state::sprite_flag_w));
+ map(0x0c2208, 0x0c2209).w(this, FUNC(megasys1_state::active_layers_w));
+ map(0x0c2308, 0x0c2309).w(this, FUNC(megasys1_state::screen_flag_w));
+ map(0x0c8000, 0x0c8001).r(m_soundlatch2, FUNC(generic_latch_16_device::read)).w(this, FUNC(megasys1_state::soundlatch_c_w));
+ map(0x0d2000, 0x0d3fff).ram().share("objectram");
+ map(0x0d8000, 0x0d8001).rw(this, FUNC(megasys1_state::ip_select_r), FUNC(megasys1_state::ip_select_w));
// 64th Street actively uses 0xe4*** for breakable objects.
- AM_RANGE(0x0e0000, 0x0e3fff) AM_MIRROR(0x4000) AM_RAM_DEVWRITE("scroll0", megasys1_tilemap_device, write) AM_SHARE("scroll0")
- AM_RANGE(0x0e8000, 0x0ebfff) AM_MIRROR(0x4000) AM_RAM_DEVWRITE("scroll1", megasys1_tilemap_device, write) AM_SHARE("scroll1")
- AM_RANGE(0x0f0000, 0x0f3fff) AM_MIRROR(0x4000) AM_RAM_DEVWRITE("scroll2", megasys1_tilemap_device, write) AM_SHARE("scroll2")
- AM_RANGE(0x0f8000, 0x0f87ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x1c0000, 0x1cffff) AM_MIRROR(0x30000) AM_RAM_WRITE(ram_w) AM_SHARE("ram") //0x1f****, Cybattler reads attract mode inputs at 0x1d****
-ADDRESS_MAP_END
+ map(0x0e0000, 0x0e3fff).mirror(0x4000).ram().w("scroll0", FUNC(megasys1_tilemap_device::write)).share("scroll0");
+ map(0x0e8000, 0x0ebfff).mirror(0x4000).ram().w("scroll1", FUNC(megasys1_tilemap_device::write)).share("scroll1");
+ map(0x0f0000, 0x0f3fff).mirror(0x4000).ram().w("scroll2", FUNC(megasys1_tilemap_device::write)).share("scroll2");
+ map(0x0f8000, 0x0f87ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x1c0000, 0x1cffff).mirror(0x30000).ram().w(this, FUNC(megasys1_state::ram_w)).share("ram"); //0x1f****, Cybattler reads attract mode inputs at 0x1d****
+}
/***************************************************************************
@@ -395,29 +401,31 @@ INTERRUPT_GEN_MEMBER(megasys1_state::megasys1D_irq)
device.execute().set_input_line(2, HOLD_LINE);
}
-ADDRESS_MAP_START(megasys1_state::megasys1D_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x0c2000, 0x0c2005) AM_DEVWRITE("scroll0", megasys1_tilemap_device, scroll_w)
- AM_RANGE(0x0c2008, 0x0c200d) AM_DEVWRITE("scroll1", megasys1_tilemap_device, scroll_w)
- AM_RANGE(0x0c2108, 0x0c2109) AM_WRITENOP //AM_WRITE(sprite_bank_w)
- AM_RANGE(0x0c2200, 0x0c2201) AM_READWRITE(sprite_flag_r, sprite_flag_w)
- AM_RANGE(0x0c2208, 0x0c2209) AM_WRITE(active_layers_w)
- AM_RANGE(0x0c2308, 0x0c2309) AM_WRITE(screen_flag_w)
- AM_RANGE(0x0ca000, 0x0cbfff) AM_RAM AM_SHARE("objectram")
- AM_RANGE(0x0d0000, 0x0d3fff) AM_RAM_DEVWRITE("scroll1", megasys1_tilemap_device, write) AM_SHARE("scroll1")
- AM_RANGE(0x0d8000, 0x0d87ff) AM_MIRROR(0x3000) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x0e0000, 0x0e0001) AM_READ_PORT("DSW")
- AM_RANGE(0x0e8000, 0x0ebfff) AM_RAM_DEVWRITE("scroll0", megasys1_tilemap_device, write) AM_SHARE("scroll0")
- AM_RANGE(0x0f0000, 0x0f0001) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x0f8000, 0x0f8001) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x00ff)
-// AM_RANGE(0x100000, 0x100001) // protection
- AM_RANGE(0x1f0000, 0x1fffff) AM_RAM /*_WRITE(ram_w)*/ AM_SHARE("ram")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(megasys1_state::megasys1D_oki_map)
- AM_RANGE(0x00000, 0x1ffff) AM_ROM
- AM_RANGE(0x20000, 0x3ffff) AM_ROMBANK("okibank")
-ADDRESS_MAP_END
+void megasys1_state::megasys1D_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x0c2000, 0x0c2005).w("scroll0", FUNC(megasys1_tilemap_device::scroll_w));
+ map(0x0c2008, 0x0c200d).w("scroll1", FUNC(megasys1_tilemap_device::scroll_w));
+ map(0x0c2108, 0x0c2109).nopw(); //AM_WRITE(sprite_bank_w)
+ map(0x0c2200, 0x0c2201).rw(this, FUNC(megasys1_state::sprite_flag_r), FUNC(megasys1_state::sprite_flag_w));
+ map(0x0c2208, 0x0c2209).w(this, FUNC(megasys1_state::active_layers_w));
+ map(0x0c2308, 0x0c2309).w(this, FUNC(megasys1_state::screen_flag_w));
+ map(0x0ca000, 0x0cbfff).ram().share("objectram");
+ map(0x0d0000, 0x0d3fff).ram().w("scroll1", FUNC(megasys1_tilemap_device::write)).share("scroll1");
+ map(0x0d8000, 0x0d87ff).mirror(0x3000).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x0e0000, 0x0e0001).portr("DSW");
+ map(0x0e8000, 0x0ebfff).ram().w("scroll0", FUNC(megasys1_tilemap_device::write)).share("scroll0");
+ map(0x0f0000, 0x0f0001).portr("SYSTEM");
+ map(0x0f8001, 0x0f8001).rw(m_oki1, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+// map(0x100000, 0x100001); // protection
+ map(0x1f0000, 0x1fffff).ram() /*.w(this, FUNC(megasys1_state::ram_w))*/ .share("ram");
+}
+
+void megasys1_state::megasys1D_oki_map(address_map &map)
+{
+ map(0x00000, 0x1ffff).rom();
+ map(0x20000, 0x3ffff).bankr("okibank");
+}
/*************************************
*
@@ -503,27 +511,29 @@ READ8_MEMBER(megasys1_state::oki_status_2_r)
***************************************************************************/
-ADDRESS_MAP_START(megasys1_state::megasys1A_sound_map)
- AM_RANGE(0x000000, 0x01ffff) AM_ROM
- AM_RANGE(0x040000, 0x040001) AM_DEVREAD("soundlatch", generic_latch_16_device, read)
- AM_RANGE(0x060000, 0x060001) AM_DEVWRITE("soundlatch2", generic_latch_16_device, write) // to main cpu
- AM_RANGE(0x080000, 0x080003) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff)
- AM_RANGE(0x0a0000, 0x0a0001) AM_READ8(oki_status_1_r, 0x00ff)
- AM_RANGE(0x0a0000, 0x0a0003) AM_DEVWRITE8("oki1", okim6295_device, write, 0x00ff)
- AM_RANGE(0x0c0000, 0x0c0001) AM_READ8(oki_status_2_r, 0x00ff)
- AM_RANGE(0x0c0000, 0x0c0003) AM_DEVWRITE8("oki2", okim6295_device, write, 0x00ff)
- AM_RANGE(0x0e0000, 0x0fffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(megasys1_state::kickoffb_sound_map) // TODO: wrong, needs to be checked range for range
- AM_RANGE(0x000000, 0x01ffff) AM_ROM
- AM_RANGE(0x040000, 0x040001) AM_DEVREAD("soundlatch", generic_latch_16_device, read)
- AM_RANGE(0x060000, 0x060001) AM_DEVWRITE("soundlatch2", generic_latch_16_device, write) // to main cpu
- AM_RANGE(0x080000, 0x080003) AM_DEVREADWRITE8("ymsnd", ym2203_device, read, write, 0x00ff)
- AM_RANGE(0x0a0000, 0x0a0001) AM_READ8(oki_status_1_r, 0x00ff)
- AM_RANGE(0x0a0000, 0x0a0003) AM_DEVWRITE8("oki1", okim6295_device, write, 0x00ff)
- AM_RANGE(0x0e0000, 0x0fffff) AM_RAM
-ADDRESS_MAP_END
+void megasys1_state::megasys1A_sound_map(address_map &map)
+{
+ map(0x000000, 0x01ffff).rom();
+ map(0x040000, 0x040001).r(m_soundlatch, FUNC(generic_latch_16_device::read));
+ map(0x060000, 0x060001).w(m_soundlatch2, FUNC(generic_latch_16_device::write)); // to main cpu
+ map(0x080000, 0x080003).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)).umask16(0x00ff);
+ map(0x0a0001, 0x0a0001).r(this, FUNC(megasys1_state::oki_status_1_r));
+ map(0x0a0000, 0x0a0003).w(m_oki1, FUNC(okim6295_device::write)).umask16(0x00ff);
+ map(0x0c0001, 0x0c0001).r(this, FUNC(megasys1_state::oki_status_2_r));
+ map(0x0c0000, 0x0c0003).w(m_oki2, FUNC(okim6295_device::write)).umask16(0x00ff);
+ map(0x0e0000, 0x0fffff).ram();
+}
+
+void megasys1_state::kickoffb_sound_map(address_map &map)
+{ // TODO: wrong, needs to be checked range for range
+ map(0x000000, 0x01ffff).rom();
+ map(0x040000, 0x040001).r(m_soundlatch, FUNC(generic_latch_16_device::read));
+ map(0x060000, 0x060001).w(m_soundlatch2, FUNC(generic_latch_16_device::write)); // to main cpu
+ map(0x080000, 0x080003).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)).umask16(0x00ff);
+ map(0x0a0001, 0x0a0001).r(this, FUNC(megasys1_state::oki_status_1_r));
+ map(0x0a0000, 0x0a0003).w(m_oki1, FUNC(okim6295_device::write)).umask16(0x00ff);
+ map(0x0e0000, 0x0fffff).ram();
+}
/***************************************************************************
@@ -531,17 +541,18 @@ ADDRESS_MAP_END
***************************************************************************/
-ADDRESS_MAP_START(megasys1_state::megasys1B_sound_map)
- AM_RANGE(0x000000, 0x01ffff) AM_ROM
- AM_RANGE(0x040000, 0x040001) AM_DEVREAD("soundlatch", generic_latch_16_device, read) AM_DEVWRITE("soundlatch2", generic_latch_16_device, write) /* from/to main cpu */
- AM_RANGE(0x060000, 0x060001) AM_DEVREAD("soundlatch", generic_latch_16_device, read) AM_DEVWRITE("soundlatch2", generic_latch_16_device, write) /* from/to main cpu */
- AM_RANGE(0x080000, 0x080003) AM_DEVREADWRITE8("ymsnd", ym2151_device, read, write, 0x00ff)
- AM_RANGE(0x0a0000, 0x0a0001) AM_READ8(oki_status_1_r, 0x00ff)
- AM_RANGE(0x0a0000, 0x0a0003) AM_DEVWRITE8("oki1", okim6295_device, write, 0x00ff)
- AM_RANGE(0x0c0000, 0x0c0001) AM_READ8(oki_status_2_r, 0x00ff)
- AM_RANGE(0x0c0000, 0x0c0003) AM_DEVWRITE8("oki2", okim6295_device, write, 0x00ff)
- AM_RANGE(0x0e0000, 0x0effff) AM_RAM
-ADDRESS_MAP_END
+void megasys1_state::megasys1B_sound_map(address_map &map)
+{
+ map(0x000000, 0x01ffff).rom();
+ map(0x040000, 0x040001).r(m_soundlatch, FUNC(generic_latch_16_device::read)).w(m_soundlatch2, FUNC(generic_latch_16_device::write)); /* from/to main cpu */
+ map(0x060000, 0x060001).r(m_soundlatch, FUNC(generic_latch_16_device::read)).w(m_soundlatch2, FUNC(generic_latch_16_device::write)); /* from/to main cpu */
+ map(0x080000, 0x080003).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)).umask16(0x00ff);
+ map(0x0a0001, 0x0a0001).r(this, FUNC(megasys1_state::oki_status_1_r));
+ map(0x0a0000, 0x0a0003).w(m_oki1, FUNC(okim6295_device::write)).umask16(0x00ff);
+ map(0x0c0001, 0x0c0001).r(this, FUNC(megasys1_state::oki_status_2_r));
+ map(0x0c0000, 0x0c0003).w(m_oki2, FUNC(okim6295_device::write)).umask16(0x00ff);
+ map(0x0e0000, 0x0effff).ram();
+}
/***************************************************************************
@@ -550,17 +561,19 @@ ADDRESS_MAP_END
-ADDRESS_MAP_START(megasys1_state::z80_sound_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
- AM_RANGE(0xe000, 0xe000) AM_DEVREAD("soundlatch_z", generic_latch_8_device, read)
- AM_RANGE(0xf000, 0xf000) AM_WRITENOP /* ?? */
-ADDRESS_MAP_END
+void megasys1_state::z80_sound_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0xc000, 0xc7ff).ram();
+ map(0xe000, 0xe000).r(m_soundlatch_z, FUNC(generic_latch_8_device::read));
+ map(0xf000, 0xf000).nopw(); /* ?? */
+}
-ADDRESS_MAP_START(megasys1_state::z80_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
-ADDRESS_MAP_END
+void megasys1_state::z80_sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
+}
/*************************************