diff options
Diffstat (limited to 'src/mame/drivers/megasys1.cpp')
-rw-r--r-- | src/mame/drivers/megasys1.cpp | 317 |
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)); +} /************************************* |